![系统(即 WinXP)如何处理“锁定”的文件?](https://linux22.com/image/487770/%E7%B3%BB%E7%BB%9F%EF%BC%88%E5%8D%B3%20WinXP%EF%BC%89%E5%A6%82%E4%BD%95%E5%A4%84%E7%90%86%E2%80%9C%E9%94%81%E5%AE%9A%E2%80%9D%E7%9A%84%E6%96%87%E4%BB%B6%EF%BC%9F.png)
操作系统究竟如何处理锁定的文件?
或者更准确地说,为什么有时我无法从 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
答案3
我猜想您在 Explorer 上安装了一些第三方扩展,这些扩展会打开文件一段时间来扫描文件,从而导致 Explorer 锁定它。只有较大的文件才会出现此问题吗?在 Windows 世界中,锁就是锁,没有命令提示符可以删除锁定的文件(尽管如上所述,有方法可以关闭锁,然后删除文件)