我有一个在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

  • 创建了dll的32位和64位版本

  • 在Program Files文件夹下注册

但是,当我尝试从这个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);
    }
}

有没有办法让这个工作?有什么要寻找的指针?

Update 1: 进一步分析后,我看到IE正在进程监视器中寻找InprocHandler32 .

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

尽管如此仍然有同样的问题 .

我正在尝试创建一个由IE加载的ActiveX,其类似于ActiveX文档的特定MIME类型的链接,如MIME播放器

This is the error

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