2010-04-29 65 views
2

我有一個COM對象嵌入在ASP.NET頁面使用<object classid="clsid:XXX...">。它在IE 32位下工作,但在IE 64位無法工作 - 無法訪問其功能。沒有錯誤消息,沒有事件日誌,我可以獲取一些信息。如何使COM ActiveX對象在IE 64位中工作?

該DLL是C#,包括COM可見類,編譯爲任何CPU(儘管我也嘗試x86),並在客戶端安裝過程中通過執行regasm進行註冊。這創建了註冊表項,除了IE 64以外,一切正常。我在網上搜索了關於這個問題或至少一些指導並沒有找到任何東西。

我在另一個論壇上收到了一個答案,關於_MERGE_PROXYSTUB(我猜它是預處理器定義?)和ProxyStubClsid32註冊表項,但不是非常詳細。那麼,我再次搜索,沒有發現太多,並試驗:重建與_MERGE_PROXYSTUB定義,到處創建ProxyStubClsid32鍵,但沒有結果。

什麼可以是至少可能的解決方案或觀點?也許有一種方法至少可以獲得有關IE 64爲何無法訪問它的日誌?

回答

3

AnyCPU將在64位程序中工作,但您必須以不同方式註冊它。使用64位版本的Regasm.exe,您可以在c:\ windows \ microsoft.net \ framework64中找到它。驗證您是否在HKLM \ Software \ Classes \ CLSID中獲取密鑰,而不是在HKLM \ Software \ Wow6432Node \ Classes \ CLSID中。

+0

謝謝,這是有效的! 現在我有一個問題,通過寫入64位和32位註冊表,使其不被阻塞,但這是另一回事... – Kurtevich 2010-04-30 17:39:23

+0

O不使用Regasm.exe註冊.net ActiveX控件,我使用安裝項目和一個inf文件打包在cab文件中,在這種情況下我能做些什麼? – 2013-12-05 14:08:13