我有一个 32 位 COM 组件,主要由 ASP 使用,我们也有 64 位版本。
64 位版本在功能上是相同的,并且也使用相同的 ProgID(据我所知,相同的 CLSID 等)。
我可以在与 32 位版本相同的计算机上安装/regsvr 64 位版本(显然在不同的文件夹中),并让我现有的 32 位应用程序继续使用 32 位组件,而我的 64 位应用程序使用 64 位版本?
这些是用 C++ 而不是 .NET 编写的本机代码组件。
这应该是可能的。
在 64 位 Windows 上,registry http://msdn.microsoft.com/en-us/library/aa384232(VS.85).aspx and 文件系统 http://msdn.microsoft.com/en-us/library/aa384187(VS.85).aspx针对 32 位应用程序进行重定向。 32 位 COM dll 的注册将位于注册表中的单独位置 (HKLM\Software\Wow6432Node\Classes),并且您的 COM 组件应位于单独的文件夹中,64 位位于 Program Files 下,32 位位于 Program Files 下(x86)。 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
And
HKEY_CLASSES_ROOT\CLSID{8856F961-340A-11D0-A96B-00C04FD705A2}\InProcServer32\Default = C:\Windows\System32\ieframe.dll
同一系统上的 32 位和 64 位版本的 WebBrowser 控件。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)