IE 10增强保护模式和COM组件创建类未注册

时间:2015-05-28 08:24:21

标签: internet-explorer com activex internet-explorer-10 epm

我有一个在IE10下运行的ActiveX(AddOn)。它使用来自互联网和各种链接的指南创建。我尝试使用以下方法使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 Folder下注册

但是,当我尝试从这个AddOn中创建一个COM组件时,我得到的类没有注册。 我的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。

为什么我们需要一个在进程中加载​​的ActiveX的InProcess Handler,我认为它只适用于Out of Process对象。

虽然仍然遇到同样的问题。

我试图在类似于ActiveX文档的特定MIME类型的链接上创建由IE加载的ActiveX,如MIME播放器

This is the error

有没有办法找到阻塞的原因?即使我赢了,我也会收到此错误;请创建COM对象。

0 个答案:

没有答案