Ошибка создания 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));