有一个免费的 MS/Sysinternals 程序叫做pendmoves,它可以显示等待在重启时删除/移动的文件列表。
您还可以查看以下注册表项以获取挂起操作的列表:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\PendingFileRenameOperations
Run Code Online (Sandbox Code Playgroud)
执行此操作的 API 操作称为带有 MOVEFILE_DELAY_UNTIL_REBOOT 选项的 MoveFileEx()。
此知识库中的更多信息。
仅供参考,要手动向注册表的此区域添加工作条目,您可以执行以下操作:
启动 REGEDT32 (W2K) 或 REGEDIT (WXP) 并导航到: HKLM\System\CurrentControlSet\Control\Session Manager
W2K:编辑,添加值...,数据类型:REG_MULTI_SZ,值名称:PendingFileRenameOperations,OK
WXP:编辑、新建、多字符串值、[输入] PendingFileRenameOperations
- 在数据区输入“\??\”+要删除的文件名。LFN 可以在不嵌入引号的情况下输入。要删除“C:\Long Directory Name\Long File Name.exe”,请输入以下数据:
\??\C:\长目录名\长文件名.exe
然后按确定。
- “目标文件名”是一个空(零)字符串。输入如下:
W2K:编辑,二进制,选择数据格式:十六进制,点击十六进制字符串的末尾,输入0000(四个零),确定。
WXP:右击数值,选择“修改二进制数据”,点击十六进制字符串的末尾,输入0000(四个零),确定。
- 关闭 REGEDT32/REGEDIT 并重新启动以删除文件。
当然,使用movefile 比做所有这些都容易。