2009-07-09 83 views
5

我有一個主要由ASP使用的32位COM組件,我們也有64位版本。我的32位和64位COM組件可以共同駐留在同一臺機器上嗎?

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

我可以在32位版本的同一臺計算機上安裝/ regsvr 64位版本(顯然位於不同的文件夾中),並讓我現有的32位應用程序繼續使用32位組件,而我的64位應用程序消耗64位版本?

這些是用C++而不是.NET編寫的本地代碼組件。

回答

7

這應該是可以的。

在64位窗,registryfile 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 \類\ CLSID {{8856F961-340A-11D0-A96B-00C04FD705A2} \ InProcServer32中\默認爲C:\ WINDOWS \ SYSWOW64 \ ieframe.dll

而且

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

web瀏覽器的

32位和64位版本控制同一個系統。

+0

這就是我希望會發生的事情,但裏德似乎認爲否則。我現在無法嘗試,因爲我無法訪問64位測試環境,如果它破壞了某些東西,我可以破壞它。 – Kev 2009-07-09 16:41:56

相關問題