0

我有一个在 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 文件夹下注册

但是,当我尝试从这个插件中创建一个 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,我认为它仅适用于进程外对象。

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

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

这是错误

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

4

0 回答 0