我在 Vista SP1 上有一个 Windows 服务应用程序,我发现用户正在重命名其可执行文件(在它运行时)然后重新启动,从而导致它在下次启动时无法启动,因为服务管理器无法再找到 exe文件,因为它已被重命名。
我似乎记得在旧版本的 Windows 中你不能这样做,因为操作系统在文件上设置了锁。即使使用 Vista SP1,我仍然无法在现有文件运行时复制它 - Windows 报告该文件正在使用中 - 是有道理的。那么为什么我应该被允许重命名呢?如果 Windows 需要从 exe 中调入新的代码页,但文件自启动后已被重命名,会发生什么情况?我在重命名 exe 文件等时运行了 Process Monitor,但 Process Mon 没有报告任何奇怪的事情,只是像任何其他文件一样记录了更改文件名。
有谁知道幕后发生了什么?Windows 允许更改正在运行的进程的文件名(或其依赖的 DLL)似乎违反直觉。我在这里想念什么?