XP System32 文件夹-删除后 DLL 神奇地被替换了吗?

XP System32 文件夹-删除后 DLL 神奇地被替换了吗?

我们的销售人员安装了一个内部应用程序,该应用程序使用存储在 System32 中的一些自定义 COM 对象/DLL。我一直试图用较新版本的 DLL 替换其中一个,安装后可以正常工作,但重新启动后就不行了。

有趣的部分就在这里。

  1. 我使用 regsvr32 /u myDll.dll 取消注册旧的 DLL
  2. Regsvr32 显示一个对话框,表示成功。
  3. 我将旧的 DLL 复制到“保存”文件夹中,并将其重命名为 20110412-myDll.dll_。
  4. 我从system32中删除了原来的内容。
  5. 我将新的 DLL 放在了 system32 中。
  6. 使用 regsvr32 myDll.dll 注册新的 dll
  7. 使用 VBScript 测试新的 DLL - 运行良好。
  8. 有趣的是
  9. 重启。
  10. 重新运行测试 vb 脚本。它失败。
  11. 查看 system32 中的 DLL(我替换的)。它已神奇地被旧 DLL 替换。我fc使用 system32\myDll.dll 和保存的 20110412-myDll.dll_(二进制比较)验证了这一点。
  12. 删除旧的 DLL。确认它确实消失了。
  13. 在所有驱动器中搜索“myDll.DLL”,包括系统文件夹。验证“save”文件夹中除了重命名的版本外,没有旧 DLL 的实例。
  14. 重启
  15. 旧的 DLL 又神奇地出现了。

我为此使用的用户帐户对机器具有完全管理权限。我找不到任何可以执行此操作的正在运行的进程,我们的 IT 部门束手无策。

有人有什么建议吗?

更新

只是为了好玩,我以安全模式启动了其中一台机器,安装了新的 DLL,然后再次重新启动。这次更改似乎起作用了,即使在随后的重新启动之后也是如此。很奇怪。

我可以在出现同样问题的其他机器上执行此操作,并且我希望它能正常工作,但我真的很想知道问题是什么。啊。

答案1

这很可能是系统还原的问题。请尝试在替换 DLL 之前禁用它。

有关详细信息,请参阅For more info, seeWindows 操作系统中的系统还原是什么?

http://support.microsoft.com/kb/310405

答案2

C:\Windows\System32\DLLCache系统正在用以下文件替换 DLLWindows 文件保护. 在事件查看器(在管理工具中)中检查系统日志是否存在此事件:

事件 ID:64001
来源:Windows 文件保护
描述:尝试对受保护的系统文件 C:\Windows\System32\myDll.DLL 进行文件替换。此文件已恢复为原始版本以保持系统稳定性。系统文件的文件版本为 xx:xx

尝试删除存储在中的 DLL 文件DLLCache,再次替换 中的 DLL System32,然后重新启动计算机

编辑:检查安全软件中的日志,因为某些安全程序会监视系统 DLL 并阻止替换文件的尝试。您也可以尝试使用进程监控检查哪个程序正在替换 DLL,尤其是在启动时使用位于“选项”下的“启用启动日志记录”功能。

相关内容