过去几个月里,我断断续续地在自己的电脑和工作场所的其他几台电脑上安装 IBM Rational 软件;从来没有遇到过这样的问题。
多个产品的安装文件位于共享驱动器上;当使用完全访问网络管理员或本地管理员帐户安装它们时,我遇到了“无法注册 X .dll”错误。有些软件只有几个 DLL,而其他软件有 80 多个。似乎有些 DLL 可以注册,而其他 DLL 则不会。即使使用 Regsvr32 在命令行上注册它们也会失败。该软件过去已在多台计算机上成功安装,但现在这个问题不仅出现在我的电脑上,还出现在另外两台电脑上——两台电脑都使用与以前相同的管理员访问帐户。
我猜想安装文件所在的共享驱动器上可能存在文件损坏,但为什么安装/卸载过程中唯一的问题就是注册/取消注册 DLL。到目前为止,我对此的唯一猜测是它们是来自其他 Rational 软件(可能是较新版本)的共享/受保护的 DLL?当然,这可能表明我完全不了解 Windows 如何存储和管理 DLL。
答案1
我认为后者很有可能,因为您会经常发现 DLL 是针对特定版本编译的,而较新的版本可能会破坏这些依赖关系。
过去 99% 的时间我都发现这种情况。我建议创建一个只带有操作系统的虚拟机,并创建快照。然后安装 Rational 软件的原始软件,并确保它仍然有效。如果可以,您就知道问题出在 Rational 升级上。然后升级 Rational 软件,测试 DLL 仍然有效。如果可以,则意味着升级不会影响原始软件。
回滚快照并安装新的 Rational,然后安装出现错误的软件。这样您就可以快速消除大多数问题。
答案2
我有时会遇到这样的问题:只要数据执行保护 (DEP) 处于开启状态,编写错误的 DLL 就不会注册。