操作系统究竟如何处理锁定的文件?
或者更准确地说,为什么有时我无法从 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 世界中,锁就是锁,没有命令提示符可以删除锁定的文件(尽管如上所述,有方法可以关闭锁,然后删除文件)