COM dll注册时收到错误80004005

时间:2014-09-24 08:09:53

标签: delphi windows-7 com registration

我有一个Delphi COM dll,可以在几台机器上完美运行。但是,当我尝试在一个Windows 7机器上注册它时,我收到以下错误

DllRegisterServer failed with error code 0x80004005

我已经尝试了明确的解决方案,以确保注册正确的支持库。

2 个答案:

答案 0 :(得分:2)

我找到here的解决方案是将调用提升为regsvr32

以管理员身份运行CMD,然后从命令行调用regsvr32解决了我的问题,但没有找到主要错误。

答案 1 :(得分:1)

该错误代码为E_FAIL,这是通用的COM错误代码。这意味着,出了问题,但我们不会比那更具体

那么,出了什么问题?好吧,你有COM服务器,我们不是。所以你可以调试它来找出答案。在启用调试的情况下构建COM服务器,并为RTL文件调试DCU,因为您可能想要调试它们。

您希望调试响应注册的代码。这是TComServer.UpdateRegistry方法。该代码依次调用您声明的各个类工厂的注册方法。失败可能在您的注册码或默认注册码中。您需要调试注册代码的执行。使用regsvr32作为主持人进程来执行此操作。在UpdateRegistry的开头设置一个断点,然后进行调试以找出问题所在。

我可以看到,通过反复试验,您发现您的COM服务器需要使用管理员权限注册,大概是因为它写入了HKLM。鉴于您的问题,我们无法识别出可以识别出的信息。所以我写了这个通用的答案来说明如何调试和诊断这样的一般问题。

相关问题