Dynamic-Link 库更新

有时需要将 DLL 替换为较新版本。 在替换 DLL 之前,请执行版本检查,以确保将旧版本替换为较新版本。 可以替换正在使用的 DLL。 用于替换正在使用的 DLL 的方法取决于所使用的作系统。 在 Windows XP 及更高版本上,应用程序应使用 独立应用程序和并行程序集

如果执行以下步骤,则无需重新启动计算机:

  1. 使用 MoveFileEx 函数重命名要替换的 DLL。 不要指定MOVEFILE_COPY_ALLOWED,并确保重命名的文件位于包含原始文件的同一卷上。 还可以通过提供其他扩展名来重命名同一目录中的文件。
  2. 将新 DLL 复制到包含重命名 DLL 的目录。 所有应用程序现在都将使用新的 DLL。
  3. MoveFileEx 与MOVEFILE_DELAY_UNTIL_REBOOT配合使用以删除重命名的 DLL。

在进行此替换之前,应用程序将使用原始 DLL,直到卸载它。 替换后,应用程序将使用新的 DLL。 编写 DLL 时,必须小心确保它已准备好处理这种情况,尤其是在 DLL 维护全局状态信息或与其他服务通信时。 如果 DLL 未准备好更改全局状态信息或通信协议,更新 DLL 将要求重启计算机,以确保所有应用程序都使用相同的 DLL 版本。