当天的问候。
我遇到问题,我的64位ActiveX组件可以通过IE10(64位)浏览器在Win8(64位)上运行。
ISSUE:
我有一个64位的Intranet应用程序,其中我有一个ActiveX组件(COM .dll),它在Internet Explorer中创建一个资源管理器栏和一个BHO。
我试图在Win8(64位)和IE10中使用这个ActiveX组件。
什么对我有用:
- 我使用未启用EPM的IE10在Win8(64位\ 32位)\ Win7(64位\ 32位)中使用32位ActiveX版本。
- 使用IE7 \ IE8(64位)的Win7(64位)\ Win Server 2008 R2(64位)中的64位ActiveX。
- 我使用启用了EPM的IE10在Win7(64位)中的64位ActiveX。
醇>
什么对我不起作用:
- 我的64位ActiveX组件在Win8(64位)中使用启用了EPM的IE10(64位)。
醇>
通过互联网阅读了所有可用的博客,我了解到使用IE10的64位ActiveX组件在Win8(64位)中工作,我需要启用EPM(增强保护模式),注册我的32位和64位版本ActiveX和我的ActiveX应该是EPM兼容的。此外,我的DLL应位于AppContainer可读文件夹中,如Program Files。
博客链接:
- 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/
醇>
我到目前为止所尝试的内容:
- 根据以上链接使我的ActiveX组件EPM兼容。
(我的ActiveX dll有5-6个类和不同的.rgs文件用于注册每个。所以我在单独的.h文件中添加了AppContainer GUID,并在每个类.cxx文件中包含该文件。还包括
所有.rgs文件中的“已实施类别”。)
- 注册了我的ActiveX的32位和64位版本。
- 启用EPM。
醇>
现在我只能通过EPM启用我的资源管理器栏。但其他BHO功能无效。
我的ActiveX的一个功能是它读取机器名并返回它。但是在使用IE10的Win8(64位)中,即使执行了以上所有操作,它也无法正常工作。
底线是我的ActiveX没有按预期完全正常工作,即.BHO组件之一(用于读取客户端机器名)的实例未按预期实例化,同样的组件工作正常在同一环境中使用32位BHO组件:(
- 在使我的ActiveX组件与EPM兼容时,我做错了吗?
- 由于我希望我的应用程序只能在64位模式下运行,因为它是一个内部网应用程序,我是否还需要注册我的ActiveX的32位和64位版本?
- 32位和64位版本是否应该与EPM兼容?
- 32位和64位是否应该具有相同的CLSID?
醇>
任何快速的解决方案都会非常感激,因为我在过去的几天里一直在努力解决这个问题,希望得到你们家人的积极回应。
提前致谢