我的32位和64位COM组件可以共存在同一台机器上吗?

Kev*_*Kev 5 com dll 64-bit

我有一个32位COM组件,主要由ASP使用,我们也有64位版本.

64位版本在功能上是相同的,它也使用相同的ProgID(据我所知,相同的CLSID等).

我可以在32位版本的同一台机器上安装/ regsvr 64位版本(显然在不同的文件夹中)并使我现有的32位应用程序继续使用32位组件,而我的64位应用程序使用64位版本?

这些是用C++而不是.NET编写的本机代码组件.

Mic*_*ael 7

这应该是可能的.

在64位窗口上,注册表文件系统被重定向到32位应用程序.注册32位COM dll将位于注册表中的单独位置(HKLM\Software\Wow6432Node\Classes),并且您的COM组件应位于单独的文件夹中,64位位于Program Files下,32位位于Program Files下(86).32位应用程序的注册表/文件重定向应该使透明工作.

组件本身可能会阻止这种情况 - 例如,如果它创建的全局资源会阻止32位和64位版本之间的冲突.

这种情况已经存在于64位Windows上.在我的64位系统上,我有:

HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Classes\CLSID {8856F961-340A-11D0-A96B-00C04FD705A2}\InProcServer32\Default = C:\ Windows\SysWow64\ieframe.dll

HKEY_CLASSES_ROOT\CLSID {8856F961-340A-11D0-A96B-00C04FD705A2}\InProcServer32\Default = C:\ Windows\System32\ieframe.dll

同一系统上的32位和64位版本的WebBrowser控件.