我尝试了所有能找到的方法,包括使用 Eraser,但都不起作用。在最近的一次尝试中,我以管理员身份运行命令提示符,切换到包含该文件的目录,然后输入:TYPE nul > “DSC00138_13.arw.xmp BW-LAB.tif”。什么也没发生;光标下移到下一行,只是闪烁。这个想法是将文件变成零字节文件,以便可以删除它。这在过去是有效的。重新启动命令提示符并尝试删除该文件会产生相同的结果:光标闪烁。
我已经尝试了安全模式、sfc /scannow 和 IObit Unlocker。
答案1
答案2
无法删除文件的最常见原因包括:
- 该文件的权限禁止用户/进程删除该文件。
- 该文件正被一个进程保持打开状态。
一个可能消除这两种情况的选项是让 Windows 会话管理器 (SMSS.EXE) 在系统启动时删除或重命名文件。这可以使用 PendingFileRenameOperations (PFRO) 注册表项来实现。该操作在本地系统上下文中运行,并在启动时运行得足够早,以至于该文件尚未被可能锁定该文件的进程打开。
安装程序通常使用此方法来保证可以在使用现有文件的地方替换或删除文件。
有问题的 PendingFileRenameOperations MULTI_SZ 注册表值可在以下项下找到:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager
下面的屏幕截图是在下次系统启动时要删除四个项目的示例。
条目后面的空格表示文件将被删除。如果行后有条目(没有空格),则这是重命名操作。您可以将行视为两个条目的对。
Sysinternals 有以下命令行工具可以与此注册表值交互:
- 彭德莫夫斯
- 移动文件
PendMoves 读取上述注册表项并显示待处理的操作,MoveFile 调用移动文件将标志参数设置为 MOVEFILE_DELAY_UNTIL_REBOOT 的 API。
如果启动时一个或多个 PFRO 出现问题,则可以在此处找到日志文件:%SystemRoot%\PFRO.log,例如 C:\windows\PFRO.log。
答案3
我猜想文件根本没有被锁定,但奇怪的双重扩展名(第一个扩展名部分有一个空格)导致 Windows 发脾气。
将文件名放在“”引号中通常可以解决此问题,但并不总是有效。
PowerShell 比 Win32 和文件资源管理器更现代,并且通常可以做得更好。
尝试以下操作:
启动 PowerShell 提示符。
转到包含该文件的文件夹。
键入del dsc00138_13.ar
,然后按 TAB 键让 PowerShell 自动填写文件名的其余部分。
然后按 Enter 删除该文件。
如果运气好的话,PowerShell 自动完成功能会以可以删除的方式构造文件名。
答案4
当我正确运行 Sysinternals 的 movefile 时,它完成了这项工作。感谢 HelpingHand 的建议。