EPM中的IE BHO(增强保护模式)

Sha*_*ish 10 internet-explorer bho

我试图让我的IE BHO在Win8(IE10和IE11预览版)上工作,EPM打开.我从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 ''   
                    {
                    }
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

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

Eri*_*Law 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 \文件夹的子文件夹).如果您没有这样做,IE实例将不会在增强保护模式下加载您的DLL.

  • 约束很简单:AppContainers只能读取ACL的文件系统路径,以允许AppContainers访问它们.IE的内容进程无法加载您的DLL,如果它不在它有权访问的路径中. (2认同)