当天的问候 .

我有问题使我的64位ActiveX组件在IE8(64位)浏览器上运行在Win8(64位)上 .


ISSUE:

我有一个64位的Intranet应用程序,其中我有一个ActiveX组件(COM .dll),它在Internet Explorer中创建一个资源管理器栏和一个BHO . 我试图在Win8(64位)和IE10中使用这个ActiveX组件 .

What works for me:

  • 我的32位ActiveX版本在Win8(64位/ 32位)\ Win7(64位\ 32位)中使用未启用EPM的IE10 .

  • 我的64位ActiveX在Win7(64位)\ Win Server 2008 R2(64位)中使用IE7 \ IE8(64位) .

  • 我的64位ActiveX在Win7(64位)中使用启用了EPM的IE10 .

What does not works for me:

  • 我的64位ActiveX组件在Win8(64位)中使用启用了EPM的IE10(64位) .

通过互联网阅读了所有可用的博客后,我了解到使用IE10在64位ActiveX组件中使用Win8(64位),我需要启用EPM(增强保护模式),同时注册我的ActiveX的32位和64位版本 . 我的ActiveX应该与EPM兼容 . 此外,我的DLL应位于AppContainer可读文件夹中,如Program Files .

博客链接:

What I have tried So far:

  • 根据上述链接使我的ActiveX组件EPM兼容 . (我的ActiveX dll有5-6个类和不同的.rgs文件用于注册每个 . 所以我在一个单独的.h文件中添加了AppContainer GUID,并在每个类.cxx文件中包含该文件 . 还包括所有的'Implemented Categories' .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?

任何快速的解决方案都会非常感激,因为我在过去的几天里一直在努力解决这个问题,希望你的家伙能够给出积极的回应 .

提前致谢