Режим расширенной защиты IE 10 и класс создания COM-компонента не зарегистрированы

У меня есть ActiveX (AddOn), который работает под IE10. Он создан с использованием руководящих принципов из Интернета и различных ссылок. Я попытался сделать его совместимым с EPM, используя:

http://blogs.msdn.com/b/ieinternals/archive/2012/03/23/understanding-ie10-enhanced-protected-mode-network-security-addons-cookies-metro-desktop.aspx)

https://msdn.microsoft.com/en-us/library/dn519894(v=vs.85).aspx

  • Созданы 32- и 64-битные версии DLL
  • Зарегистрированный в папке Program Files

Однако, когда я пытаюсь создать COM-компонент из этого AddOn, я получаю незарегистрированный класс. Мой COM-компонент является ActiveX DLL и создается как INPROC_SERVER

Мой вызов CLSIDFromProgID выполнен успешно, поэтому в этом случае нет проблем с доступом к реестру. Это CoCreateInstance, который вызывает проблему.

hr = CLSIDFromProgID(L"myapp.mycontrol", &cls);
if(SUCCEEDED(hr))
{
    hr = CoCreateInstance(cls, NULL, CLSCTX_INPROC_SERVER,
        __uuidof(IMyControl), (void**) &m_pMyCtrl);
    if(SUCCEEDED(hr))
    {
      ...
    }
    else {
     Log(hr);
    }
}

Есть ли способ заставить это работать? Любые указатели на то, что искать?

Обновление 1: после дальнейшего анализа я вижу, что IE ищет InprocHandler32 в мониторе процесса.

Зачем нам нужен обработчик InProcess для ActiveX, который загружается в процессе, я думал, что это только для объектов вне процесса.

Все еще получаю ту же проблему, хотя.

Я пытаюсь создать ActiveX, который загружается IE по ссылке определенного типа MIME, похожей на документы ActiveX, например, MIME Player

Это ошибка

Есть ли способ узнать, почему он блокирует? Я получаю эту ошибку, даже если я не смогу создать COM-объект.

0 ответов

Другие вопросы по тегам