我们有一个旧的经典 ASP 网站,我正尝试将其托管在新的 Server 2012 机器上。它使用内部开发的 VB6 DLL。
我复制了安装程序文件,但出现错误。我尝试使用“regsvr32 pathToDll\theDll.dll”手动注册 DLL,但返回错误 0x80004005。Google 建议我从提升的命令提示符运行该命令。所以我照做了,但还是出现同样的错误。我还尝试从 SYSWOW64 目录运行相同的命令,但还是出现同样的错误。
通过谷歌搜索,我还发现这可能是由于缺少依赖项。我使用了 Dependency Walker,果然它缺少了一些东西。所以我发现我必须安装 VB6 运行时文件,并启用一些功能,这样所有的依赖项就都解决了。所以我尝试重新注册 DLL,但仍然出现同样的错误。
有什么想法吗?我知道它是 64 位机器上的 32 位 dll,但它至少应该注册。
答案1
好的,经过更多搜索后,我通过 Dependency Walker 发现该 dll 正在通过其他 dll 链引用 API-MS-WIN-CORE-SYNCH-L1-1-0.DLL。
根据微软提供的信息,看起来这不兼容。看来我必须重新编译 DLL 才能通过更改引用使其工作。
解决方案:我将为这个旧版应用程序启动一个虚拟机。