我有一个用 Delphi 编写的Windows服务,它实用了 dll ,也用 的Delphi 即可。此 dll 使用 .Net dll 来处理通讯。
所有这些都在我在公司的时间之前预定,并且没有任何来源可用于任何一个。 .Net dll 包含需要更改的网络服务的网址。我已经解组 .Net dll ,更改了品牌并重新编译,但是换掉旧文件会导致错误
'OLE错误80131040'
我花了很多时间搜索/研究这个错误,但由于我没有Delphi部分的来源,我找到的答案毫无用处。
我知道的事情:
•为了证明反编译/重新编译过程,我拿了原始的dll并将其用作测试。重新编译后,它的功能完美。
•'modified'dll中唯一改变的是Web服务的URL。
•我在使用时对服务运行了Process Monitor,并在注册表中识别了几个引用(CLSID)。
•我使用Regasm生成了一个注册表'merge'文件,并将其应用于此。据我所见,所有旧引用都被替换,但现在我的错误已更改为“Class not registered”。
•使用这些更改重新运行进程监视器显示该服务仍在尝试获取原始注册表项。
•我已经搜索了此条目的注册表(673DED65-BE57-36AF-AE8F-5BD418F1596E)并没有找到任何结果。我还让代理Ransack松散地进行内容搜索,在搜索6小时后没有产生任何结果。
•我从存档的dll版本中知道这些已被多次换出而实际服务没有被改变;因此,我无法看到如何将注册表项编码到该程序中。
•我已经检查了GAC,并且那里没有列出程序集,即使在工作版本上也是如此。
•我已尝试添加到GAC,但是收到的错误是关于程序集没有强名称,所以我认为它不会出现在那里?
所以问题是,服务STILL如何得到一个不存在的注册表项,并且在我看来的任何地方都没有详细说明?我错过了某个重要的步骤吗?