卸载程序时,Windows如何在下次重新启动时删除锁定的文件?也许有某种预定的过程?
答案 0 :(得分:4)
卸载过程使用MoveFileEx
并设置MOVEFILE_DELAY_UNTIL_REBOOT
标志,这表示在重新启动之前不应执行操作。保留lpNewFileName
参数为NULL表示应删除该文件:
如果dwFlags指定MOVEFILE_DELAY_UNTIL_REBOOT且lpNewFileName为NULL,则MoveFileEx会在系统重新启动时注册要删除的lpExistingFileName文件。如果lpExistingFileName引用目录,则仅当目录为空时,系统才会在重新启动时删除目录。
MOVEFILE_DELAY_UNTIL_REBOOT
上的信息说:
<强> MOVEFILE_DELAY_UNTIL_REBOOT 强>
在重新启动操作系统之前,系统不会移动文件。执行AUTOCHK后,系统会立即移动文件,但在创建任何页面文件之前。因此,此参数使该函数能够从以前的启动中删除分页文件
上述函数将一个条目写入注册表,该条目在启动期间自动处理:
该函数在以下注册表值中存储要在重新启动时重命名的文件的位置:
HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control \ Session Manager \ PendingFileRenameOperations