【发布时间】:2010-10-22 10:17:33
【问题描述】:
我在 Vista SP1 上有一个 Windows 服务应用程序,我发现用户正在重命名其可执行文件(在它运行时)然后重新启动,从而导致它在下次启动时无法启动,因为服务管理器无法再启动找到重命名后的 exe 文件。
我似乎记得在旧版本的 Windows 中您无法执行此操作,因为操作系统在文件上设置了锁定。即使使用 Vista SP1,我仍然无法在现有文件运行时复制它 - Windows 报告该文件正在使用中 - 是有道理的。那么为什么我应该被允许重命名呢?如果 Windows 需要从 exe 中调入新的代码页,但文件自启动后已被重命名,会发生什么情况?我在重命名 exe 文件等时运行了 Process Monitor,但 Process Mon 没有报告任何奇怪的东西,只是像其他文件一样记录了更改文件名。
有人知道幕后发生了什么吗? Windows 允许更改正在运行的进程的文件名(或其依赖的 DLL)似乎违反直觉。我在这里错过了什么?
【问题讨论】:
标签: windows service process filenames