Greetings for the day.
I am having a issue making my 64bit ActiveX component to run on Win8(64Bit) over IE10(64bit) browser.
ISSUE:
I am having a 64bit Intranet application in which I have an ActiveX component (COM .dll) which creates an explorer bar and a BHO in Internet Explorer. I am trying to use this ActiveX Component in Win8 (64Bit) and IE10.
What works for me:
- My 32 bit ActiveX version in Win8(64Bit\32bit)\Win7(64bit\32Bit) using IE10 without EPM enabled.
- My 64bit ActiveX in Win7(64bit)\Win Server 2008 R2(64bit) using IE7\IE8 (64 bit).
- My 64bit ActiveX in Win7(64bit) using IE10 having EPM enabled.
What does not works for me:
- My 64bit ActiveX component in Win8(64bit) using IE10(64bit) having EPM enabled.
Having read all the blogs available over the internet, I learnt that for a 64bit ActiveX component to work in Win8(64bit) using IE10, I need to enable EPM(Enhanced Protected Mode) , register both 32bit and 64bit versions of my ActiveX and also my ActiveX should be EPM compatible. Also my dll should be located in AppContainer readable folder like Program Files.
Blog Links:
- http://blogs.msdn.com/b/ieinternals/archive/2012/03/23/understanding-ie10-enhanced-protected-mode-network-security-addons-cookies-metro-desktop.aspx
- http://www.askyb.com/bho/step-by-step-guide-to-making-you-bho-epm-compatible-with-ie11-on-windows-8/
What I have tried So far:
- Made my ActiveX component EPM compatible according to the above links. (My ActiveX dll has 5-6 classes and different .rgs files for registering each. So I added the AppContainer GUID in a separate .h file and included that file in each class .cxx file. Also included the ‘Implemented Categories’ in all .rgs file.)
- Registered both 32bit and 64bit versions of my ActiveX.
- Enabled the EPM.
Now I am able to get only my explorer bar enabled with EPM. But other BHO functionality is not working.
One of the functionalities of my ActiveX is that it reads the Machine Name and returns it. But in Win8(64bit) using IE10 it is not working even after doing all of the above.
Bottom-line is that my ActiveX is not working completely as expected,ie., The instance of one of the BHO Component(which is used to read the clients Machine Name) is not getting instantiated as expected,same Component works fine with a 32 bit BHO Component on the same Environment :(
- Is it something I did wrong in making my ActiveX component as EPM compatible?
- As I want my application to run only in 64bit mode as it’s an intranet application, do I still need to register both 32bit and 64bit versions of my ActiveX?
- Should both the 32bit and 64bit versions should be made EPM compatible?
- Should both 32bit and 64bit have the same CLSID?
Any quick solution would be greatly appreciated, Since I’m going nuts working on this issue from past few days, hoping for a positive response from your guys.
Thanks in advance