none
IE8,ActiveX 的32,64bit组合情况的运行结果如何? RRS feed

  • 问题

  • 求教:以下的情况下是否能够正常执行
    1. IE8 64bit、ActiveX 64bit -> 能否执行?
    2. IE8 64bit、ActiveX 32bit -> 能否执行?
    3. IE8 32bit、ActiveX 32bit ->  能否执行?
    4. IE8 32bit、ActiveX 64bit ->  能否执行?
    2011年1月26日 8:41

答案

  • 一般来讲,在64位的操作系统上,是不应该将64位代码和32位代码混在一个进程里执行的。虽然64位的Windows可以通过WoW让32位应用程序在64位的操作系统上执行,但这并不说明可以在同一个进程中,同时执行64位和32位的代码。因为一般的ActiveX多是进程内组件,所以它们是不能运行在与之不同的IE进程中的。

    在ActiveX这个具体问题上,不能在64位IE上使用32位ActiveX,和不能在32位IE上使用64位ActiveX的直接原因,应该是注册表的重定向造成的。因为ActiveX是COM组件,而COM组件的初始化是要通过查寻注册表信息方能完成的。在64位Windows中,32位应用程序的注册表会被重定向到WoW6432Node中。也就是说,32位IE在初始化ActiveX时,是查找32位应用程序专用的注册表,而64位IE则在64位应用程序的注册表中查找。而正常的ActiveX会在相应的注册表中注册自己的信息。这就是为什么32位IE其实根本“看不到”64位ActiveX组件的原因,反之亦然。

    关于注册表的说明,可以参考:http://support.microsoft.com/kb/305097/zh-cn 内的相关内容。

    关于32位IE和64位IE之不同,可以参考(英文)http://support.microsoft.com/kb/896457,或才机器翻译的:http://support.microsoft.com/kb/896457/zh-cn 

    (如果你觉得需要更准确的翻译文章,可以告诉我)

    2011年1月29日 9:23

全部回复

  • 1和3是可以,其他的应该都不行。
    2011年1月26日 23:18
  • 测试的结果是1和3是可以的,2和4不可以。

    但是我需要能够拿出可以让人认可的证据,这个问题在官方的文档或者网站上有说明吗?能否提供肯定的准确的资料或者权威的测试结果说明等,谢谢!

    2011年1月27日 4:48
  • 一般来讲,在64位的操作系统上,是不应该将64位代码和32位代码混在一个进程里执行的。虽然64位的Windows可以通过WoW让32位应用程序在64位的操作系统上执行,但这并不说明可以在同一个进程中,同时执行64位和32位的代码。因为一般的ActiveX多是进程内组件,所以它们是不能运行在与之不同的IE进程中的。

    在ActiveX这个具体问题上,不能在64位IE上使用32位ActiveX,和不能在32位IE上使用64位ActiveX的直接原因,应该是注册表的重定向造成的。因为ActiveX是COM组件,而COM组件的初始化是要通过查寻注册表信息方能完成的。在64位Windows中,32位应用程序的注册表会被重定向到WoW6432Node中。也就是说,32位IE在初始化ActiveX时,是查找32位应用程序专用的注册表,而64位IE则在64位应用程序的注册表中查找。而正常的ActiveX会在相应的注册表中注册自己的信息。这就是为什么32位IE其实根本“看不到”64位ActiveX组件的原因,反之亦然。

    关于注册表的说明,可以参考:http://support.microsoft.com/kb/305097/zh-cn 内的相关内容。

    关于32位IE和64位IE之不同,可以参考(英文)http://support.microsoft.com/kb/896457,或才机器翻译的:http://support.microsoft.com/kb/896457/zh-cn 

    (如果你觉得需要更准确的翻译文章,可以告诉我)

    2011年1月29日 9:23