2014-09-24 46 views
0

我有一個在幾臺機器上完美工作的Delphi COM DLL。然而,當我嘗試註冊它放在一個Windows 7的盒子,我得到以下錯誤在COM DLL上收到錯誤80004005註冊

DllRegisterServer failed with error code 0x80004005 

我已經試過圍繞確保正確的支持庫登記明顯的解決方案。

回答

1

該錯誤代碼是E_FAIL這是通用COM錯誤代碼。這意味着,出了問題,但我們不會比那個更具體

那麼,出了什麼問題?那麼,你有COM服務器,我們不。所以你可以調試它來找出答案。在啓用調試的情況下構建COM服務器,並調試RTU文件的DCU,因爲您可能需要調試它們。

您需要調試響應註冊的代碼。這是TComServer.UpdateRegistry方法。該代碼依次調用您聲明的各個類工廠的註冊方法。失敗可能出現在您的註冊碼或默認註冊碼中。您需要調試註冊碼的執行。通過使用regsvr32作爲你的主機進程來做到這一點。在UpdateRegistry開始處設置一箇中斷點,然後進行調試以確定問題所在。

我可以看到,通過試驗和錯誤,你發現你的COM服務器需要註冊管理員權限,大概是因爲它寫入HKLM。考慮到你的問題,沒有辦法可以看出這些信息。所以我寫了這個通用答案來展示如何調試和診斷這樣的一般問題。

3

我發現here的解決方案是提升呼叫regsvr32

運行CMD以管理員身份,然後調用REGSVR32命令行解決了我的眼前問題,但並沒有跟蹤的主要錯誤。