系统(即 WinXP)如何处理“锁定”的文件?

系统(即 WinXP)如何处理“锁定”的文件?

操作系统究竟如何处理锁定的文件?

或者更准确地说,为什么有时我无法从 Windows 资源管理器中删除锁定的文件,但如果我在相关目录中打开命令提示符,我可以从那里删除它?

答案1

当进程打开文件或目录的句柄时,它会指定它想要的共享级别。共享级别可以是 FILE_SHARE_DELETE、FILE_SHARE_READ 和 FILE_SHARE_WRITE 标志的任意组合。这些标志的名称非常明显。如果我指定 FILE_SHARE_READ,这将允许其他进程读取文件,FILE_SHARE_WRITE 将允许其他进程写入文件(可能在我脚下更改它),FILE_SHARE_DELETE 将允许其他进程删除文件(尽管我认为在我关闭文件句柄后它才会真正被删除)。

无论如何,如果任何进程打开一个文件句柄并且不是指定 FILE_SHARE_DELETE,这意味着在第一个进程关闭其句柄之前,其他进程都不能删除该文件。这是您收到“文件被另一个进程锁定”错误的常见原因。请注意,进程也可以打开目录的句柄,因此这也适用于删除目录,即使它们是空的。

至于为什么你可以从命令提示符中删除文件,而不能从资源管理器中删除文件,我不明白为什么会发生这种情况。我需要亲眼看看。

JR

答案2

约翰说得对……您不能删除正在使用的文件,因为……它们正在使用中。这和您不能在开车上班时更换轮胎的原因是一样的。各种意想不到的事情都会发生。

如果你想知道哪个进程正在使用该文件(以便你可以暂时终止该进程以释放文件上的锁,请使用进程探索器来自 Microsoft/Sysinternals。

  • 单击“查找”菜单,然后选择“查找句柄或 DLL...”
  • 输入无法删除的文件名,该文件已被某个进程锁定
  • 输入搜索短语后,点击搜索按钮

如果文件正在被 Windows 使用,您可以使用启动移动由 Gibin Software 在重启后删除锁定的文件。

答案3

我猜想您在 Explorer 上安装了一些第三方扩展,这些扩展会打开文件一段时间来扫描文件,从而导致 Explorer 锁定它。只有较大的文件才会出现此问题吗?在 Windows 世界中,锁就是锁,没有命令提示符可以删除锁定的文件(尽管如上所述,有方法可以关闭锁,然后删除文件)

相关内容