2010-12-22 138 views
4

我有在32位操作系統上構建和註冊的activex服務器exe文件。我想通過將項目升級到Visual Studio 2010並將平臺更改爲X64而使該版本的64位版本無法工作。64位COM(ActiveX)服務器

應用本身的作品,但我沒有看到它運行

That.exe /RegServer 

我希望從32遷移的ActiveX到x64任何可用的意見後註冊。即加工/ RegServer添加PARAM

代碼如下:

if(lstrcmpi(lpszToken, _T("RegServer")) == 0) 
    { 
    _Module.UpdateRegistryFromResource(IDR_OUTDISKSARG, TRUE); 
    nRet = _Module.RegisterServer(TRUE); 
    bRun = false; 
    break; 
    } 

32位ActiveX是unuable對我來說,因爲我有加載它在64 .NET過程。

+0

請具體說明您如何確定它未被註冊?您在運行RegServer命令時運行Process Monitor/RegMon來查看哪些註冊表項被觸動? – EricLaw 2010-12-22 21:04:43

+0

它沒有出現在註冊表中,我使用了64位版本的RegDllView.exe來查看我在系統上註冊了哪些組件。 我也嘗試通過Interop程序集從網絡程序集中加載它,它明確指出它沒有註冊。 工具可在這裏找到:http://www.nirsoft.net/utils/registered_dll_view.html 感謝您的回覆。 – 2010-12-22 21:23:35

回答

0
  1. 當您運行That.exe/RegServer時,您是否從管理員命令提示符執行此操作?如果不是這可能是爲什麼它不起作用。

  2. 如果你這樣做了,它仍然無法正常工作,請嘗試調試它以查看註冊表的作用。例如使用進程監視器,甚至是Visual Studio調試器(記住要確保調試器以管理員身份運行你的應用程序)。

3

假設過程中有足夠的權限來寫入註冊表,你必須從提升的命令提示符下運行它照顧的是,這很可能只是COM註冊表項添加到註冊表視圖,64位進程可以看到。

32位COM客戶端獲取註冊表HKLM \ Software \ Wow6432Node的不同視圖。它不會在那裏找到註冊表項。在SDK文檔中查看RegCreateKeyEx()。請注意底部的鏈接以及關於KEY_WOW64_32KEY選項的討論。在線文章is here

訪問64位進程外COM服務器的32位客戶端其他方面的支持情況很好,但有一些注意事項。就像構建和註冊32位和64位代理/存根DLL一樣。