Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

IE BHO in EPM (Enhanced Protected Mode)

I'm trying to make my IE BHO work on Win8 (IE10 and IE11 preview) with EPM turned on. I've found a few articles about the subject from MS (http://blogs.msdn.com/b/ieinternals/archive/2012/03/23/understanding-ie10-enhanced-protected-mode-network-security-addons-cookies-metro-desktop.aspx) but they still don't provide actual examples on how to make this work. I have compiled my BHO in both 32 and 64 bit, added the category (CATID_AppContainerCompatible) as stated in the article but still I don't get any web browser events from IE. Can anybody point to a more detailed example on how to make this work ?

Here is how my rgs file looks like:


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 ''   
                    {
                    }
            }
        }
    }
}

Note that in IE's Manage Add-ons Page I see my BHO as Enabled and supports both 32bit and 64bit, but the DLL is not even loaded.

like image 813
Shaish Avatar asked Jul 10 '13 12:07

Shaish


People also ask

What is enable 64 bit processes for enhanced Protected Mode?

Enhanced Protected Mode provides additional protection against malicious websites by using 64-bit processes on 64-bit versions of Windows. For computers running at least Windows 8, Enhanced Protected Mode also limits the locations Internet Explorer can read from in the registry and the file system.

What is ie11 Protected Mode?

To enable Internet Explorer to protect your computer and personal data, Enhanced Protected Mode isolates untrusted web content in a restricted environment that's known as an AppContainer. This process limits how much access malware, spyware, or other potentially harmful code has to your system.

What is Enhanced Protection Mode?

Enhanced Protected Mode is a new feature in Internet Explorer 10. It works by extending the existing Protected Mode functionality to help prevent attackers from installing software, accessing personal information, accessing information from corporate Intranets, and from modifying system settings.


1 Answers

The DEFINE_GUID call simply defines the GUID value constant in your code, it's not actually doing anything to register your object with the COM component category (which is stored in the registry).

See http://msdn.microsoft.com/en-us/library/windows/desktop/ms692551(v=vs.85).aspx and http://msdn.microsoft.com/en-us/library/windows/desktop/ms694322(v=vs.85).aspx

You can see which objects are registered into the various categories using the OLEView tool.

Also, be sure to place your BHO's DLL with an AppContainer-readable folder (e.g. a subfolder of the \Program Files\ folder). If you fail to do so, your DLL will not be loaded by the IE instance in Enhanced Protected Mode.

like image 195
EricLaw Avatar answered Nov 01 '22 07:11

EricLaw