我有一个Delphi COM dll,可以在几台机器上完美运行。但是,当我尝试在一个Windows 7机器上注册它时,我收到以下错误
DllRegisterServer failed with error code 0x80004005
我已经尝试了明确的解决方案,以确保注册正确的支持库。
答案 0 :(得分:2)
我找到here的解决方案是将调用提升为regsvr32
以管理员身份运行CMD,然后从命令行调用regsvr32解决了我的问题,但没有找到主要错误。
答案 1 :(得分:1)
该错误代码为E_FAIL
,这是通用的COM错误代码。这意味着,出了问题,但我们不会比那更具体。
那么,出了什么问题?好吧,你有COM服务器,我们不是。所以你可以调试它来找出答案。在启用调试的情况下构建COM服务器,并为RTL文件调试DCU,因为您可能想要调试它们。
您希望调试响应注册的代码。这是TComServer.UpdateRegistry
方法。该代码依次调用您声明的各个类工厂的注册方法。失败可能在您的注册码或默认注册码中。您需要调试注册代码的执行。使用regsvr32
作为主持人进程来执行此操作。在UpdateRegistry
的开头设置一个断点,然后进行调试以找出问题所在。
我可以看到,通过反复试验,您发现您的COM服务器需要使用管理员权限注册,大概是因为它写入了HKLM。鉴于您的问题,我们无法识别出可以识别出的信息。所以我写了这个通用的答案来说明如何调试和诊断这样的一般问题。