10

我试图让我的 IE BHO 在打开 EPM 的 Win8(IE10 和 IE11 预览版)上工作。我从 MS ( http://blogs.msdn.com/b/ieinternals/archive/2012/03/23/understanding-ie10-enhanced-protected-mode-network-security-addons找到了几篇关于该主题的文章-cookies-metro-desktop.aspx),但他们仍然没有提供有关如何使其工作的实际示例。我已经编译了 32 位和 64 位的 BHO,添加了文章中所述的类别 (CATID_AppContainerCompatible),但我仍然没有从 IE 获得任何 Web 浏览器事件。任何人都可以指出如何使这项工作更详细的例子吗?

这是我的 rgs 文件的样子:


HKCR
{
    TestBHO.TestScript.1 = s 'TestScript Class'
    {
        CLSID = s '{051FB9EC-79EA-4F8E-9EC2-F1FF4462FB09}'
    }
    TestBHO.TestScript = s 'TestScript Class'
    {
        CLSID = s '{051FB9EC-79EA-4F8E-9EC2-F1FF4462FB09}'
        CurVer = s 'TestBHO.TestScript.1'
    }
    NoRemove CLSID
    {
        ForceRemove {051FB9EC-79EA-4F8E-9EC2-F1FF4462FB09} = s 'TestScript Class'
        {
            ProgID = s 'TestBHO.TestScript.1'
            VersionIndependentProgID = s 'TestBHO.TestScript'
            ForceRemove 'Programmable'
            InprocServer32 = s '%MODULE%'
            {
                val ThreadingModel = s 'Apartment'
            }
            'TypeLib' = s '{2D9CE0FA-2040-4A24-807E-0C0BF4E9ECE7}'
            'Implemented Categories' = s ''
            {
                {59fb2056-d625-48d0-a944-1a85b5ab2640} = s ''   
                    {
                    }
            }
        }
    }
}

请注意,在 IE 的管理加载项页面中,我看到我的 BHO 已启用并且支持 32 位和 64 位,但甚至没有加载 DLL。

4

1 回答 1

6

DEFINE_GUID 调用只是在您的代码中定义 GUID 值常量,它实际上并没有将您的对象注册到 COM 组件类别(存储在注册表中)。

请参阅http://msdn.microsoft.com/en-us/library/windows/desktop/ms692551(v=vs.85).aspxhttp://msdn.microsoft.com/en-us/library/windows/桌面/ms694322(v=vs.85).aspx

您可以使用 OLEView 工具查看哪些对象已注册到各种类别中。

此外,请务必将 BHO 的 DLL 放在 AppContainer 可读文件夹中(例如,\Program Files\ 文件夹的子文件夹)。如果您不这样做,您的 DLL 将不会被增强保护模式下的 IE 实例加载。

于 2013-07-12T03:19:11.030 回答