自从微软收购 Sysinternals 产品后,Sysinternals 所有工具软件都带上了微软的数字签名,从此名正言顺的成为微软的亲儿子了!今天要介绍的就是 Sysinternals 中的 movefile 工具!官方文档和软件下载: https://docs.microsoft.com/en-us/sysinternals/downloads/movefile官方软件介绍(译文):
        有些应用程序,如 Service Packs 和 HotFixes,必须替换正在使用且无法替换的文件。因此,Windows 提供了 MoveFileEx API 来重命名或删除文件,并允许调用方指定在下次系统启动引导时(在文件被使用之前)执行操作。Session Manager 通过从 HKLM\System\CurrentControlSet\Control\Session Manager\PendingFileRenameOperations 值读取已注册的重命名和删除命令来执行此任务。看到这里大家应该明白,这是微软官方认可的替换(删除)正在使用的文件最安全的办法。有人可能要问了,为什么那些直接解除正在使用状态的软件不够安全。从开发者的角度来讲,文件是正在使用的状态,就意味着有一个进程打开了此文件,并拥有读写操作的句柄。而那些强力删除工具,往往是强制关闭了使用这个文件的句柄(不是整个进程),对于正在使用这个文件的进程来说,句柄的关闭这极大的可能会导致出错而抛出一个异常,如果这个程序没有考虑到这样特殊情况的异常捕获和处理,往往就会导致这个进程的异常甚至崩溃。所以说,那些所谓的强力删除工具并不是最安全的做法。而 movefile 原理是告知会话管理器“Session Manager”在 Windows 开机引导过程中(此时还没有任何用户程序、服务启动,文件就不可能变成正在使用状态)对文件进行移动或删除操作。实际操作如下图所示:(需要以管理员身份运行)如图操作完毕后,请重启 Windows ,在下次启动的过程中,目标文件就会被删除了。虽然没有360之类的工具那样点点鼠标的傻瓜操作,但是给抵制360的用户来说,不失为一种好的选择!