我有一个主要由ASP使用的32位COM组件,我们也有64位版本。
64位版本功能相同,它也使用相同的ProgID(据我所知,同样的CLSID等)。
我可以在与32位版本相同的机器上安装/ regsvr 64位版本(显然在不同的文件夹中)并让我现有的32位应用程序继续使用32位组件,而我的64位应用程序使用64位版本?
这些是用C ++而不是.NET编写的本机代码组件。
答案 0 :(得分:7)
这应该是可能的。
在64位窗口上,registry和file system被重定向到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控件。