无法删除 NTFS 盘上的文件或文件夹(对Windows文件的各种情况有比较详细的描述

时间:2021-08-03 07:09:41

注意:在内部,NTFS 将文件夹作为特殊类型的文件进行处理。因此,本文中的“文件”一词可能指文件,也可能指文件夹。 原因 1:文件使用了 ACL 如果某个文件使用了访问控制列表 (ACL),您可能无法删除该文件。要解决此问题,请更改该文件上的权限。您可能需要拥有这些文件的所有权才能更改权限。

管理员具有取得任何文件所有权的隐含能力,即使未明确向他们授予针对此文件的任何权限也是如此。文件所有者具有修改文件权限的隐含能力,即使未明确向他们授予针对此文件的任何权限也是如此。因此,您可能需要取得对某个文件的所有权,赋予自己删除文件的权限,然后才能删除文件。
由于文件使用了不规范的 ACL 而无法使用某些安全工具来显示或修改权限 要变通解决此问题,请使用另一种工具(例如,Cacls.exe 的更新版本)。

根据所属类型,ACL 中的访问控制项 (ACE) 有特定的优先顺序。例如,拒绝访问的 ACE 一般位于授予访问权的 ACE 之前。不过,我们无法防止某个程序编写按任意顺序安排 ACE 的 ACL。在 Windows 的一些早期版本中,当 Microsoft Windows 尝试读取这些“不规范”的 ACL 时会出现问题。有时,无法通过使用 Microsoft Windows 资源管理器图形化安全编辑器正确修改这些 ACL。此问题在 Windows 的更高版本中得到了纠正。如果您遇到了此问题,请使用最新版本的 Cacls.exe。即使无法显示或编辑一个现有的 ACL,也可以编写一个允许您访问该文件的新 ACL。
原因 2:该文件正在使用 如果文件正在使用中,则可能无法将其删除。要解决此问题,请确定具有打开句柄的进程,然后关闭此进程。

根据文件的打开方式(例如,以独占访问而不是共享访问方式打开),您可能无法删除使用中的文件。无论何时,您都可以使用多种工具来帮助确定拥有文件的打开句柄的进程。要进一步了解可帮助确定拥有文件打开句柄的进程的工具,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:

242131 如何显示具有已打开文件的进程的列表

172710 如何使用 Windows NT 4.0 资源工具包中的 OH 工具

此问题的症状可能多种多样。您可以使用“删除”命令来删除一个文件,但在打开该文件的进程释放该文件之前,该文件实际上并未删除。另外,您可能无法访问正在删除中的文件的“安全”对话框。要解决此问题,请确定具有打开句柄的进程,然后关闭此进程。 原因 3:文件系统损坏使您无法访问此文件 如果文件系统被破坏,则可能无法删除此文件。要解决此问题,请在磁盘卷上运行 Chkdsk 实用工具以纠正任何存在的错误。

磁盘上的坏区、其他硬件故障或者软件错误都可能会损坏文件系统,使文件出现问题。典型操作失败的方式可能各不相同。当文件系统检测到有损坏时,它将在事件日志中记录一个事件,而且您通常会收到一条提示您运行 Chkdsk 的消息。根据损坏的性质,Chkdsk 可能能够也可能无法恢复文件数据;不过,Chkdsk 可以使文件系统返回到一种在内部一致的状态。 有关如何使用 Chkdsk 实用工具的其他信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:

176646 错误消息:The file or directory is corrupt...(文件或目录已损坏...)

187941 对 CHKDSK 和新的 /C 和 /I 开关的解释

原因 4:文件位于比 MAX_PATH 字符更深的路径中 如果文件路径存在问题,则可能无法打开、编辑或删除该文件。 解决方案 1:使用自动生成的 8.3 名称访问该文件 要解决此问题,您可能需要使用自动生成的 8.3 名称访问该文件。如果路径深的原因是文件夹名称太长,则这可能是最简便的解决方案。如果 8.3 路径也太长,或者 8.3 名称已在该卷上被禁用,则请转到解决方案 2。 有关在 NTFS 卷上禁用 8.3 文件名的其他信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:

121007 如何在 NTFS 分区上禁止创建 8.3 名称

解决方案 2:重命名或移动路径深的文件夹 重命名文件夹,以使目标文件的路径深度不超过 MAX_PATH。如要这样做,请从根文件夹(或任何其他方便的位置)开始,然后重命名文件夹,以缩短它们的名称。如果此步骤不能解决此问题(例如,如果文件的深度超过 128 个文件夹),请转到解决方案 4。 解决方案 3:将驱动器映射到路径结构中的一个文件夹 将驱动器映射到目录文件或文件夹的路径结构中的一个文件夹。该方法可缩短实际上的路径。

例如,假定您有一个类似如下结构的路径: