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