Ошибка создания COM HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG)

Не получается создать объект класса Com IShellWindows. На примере документации С++ создание работает. Но при попытке создать его в С#. Получаю исключение.

static Guid CLSID_IShellWindows = new Guid("85CB6900-4D95-11CF-960C-0080C7F4EE85");
static Guid IID_ShellWindows = new Guid("9BA05972-F6A8-11CF-A442-00A0C90A8F39");


static void Main(string[] args)
{
    Type desktopType = Type.GetTypeFromCLSID(CLSID_IShellWindows, null, true);
    object shellDesktop = Activator.CreateInstance(desktopType);
}                

Type возвращается, но его не возможно создать через Activator. Поиск по ошибке говорит сменить целевой процессор на x86, но это не помогает.


Ответы (1 шт):

Автор решения: Roman R.

Вы откуда-то взяли неверные идентификаторы и, таким образом, пытаетесь создать объект по идентификатору интерфейса. Вот так сработает:

Guid CLSID_ShellWindows = new Guid("9BA05972-F6A8-11CF-A442-00A0C90A8F39");
object shellDesktop = Activator.CreateInstance(Type.GetTypeFromCLSID(CLSID_ShellWindows, null, true));
→ Ссылка