Windows中无法删除文件的解决办法

来源:互联网 发布:php 模拟发送http请求 编辑:程序博客网 时间:2024/04/30 05:05
Windows中无法删除文件的解决办法

  有时候我们在删除某个文件或文件夹时,系统提示无法删除,这确实令人十分头疼,现在我们就来看看解决的办法。

  一、常规解决办法:
  1.注消或重启电脑,然后再试着删除。
  2 .进入“安全模式删除”。
  3.在纯DOS命令行下使用DEL,DELTREE和RD命令将其删除。
  4.如果是文件夹中有比较多的子目录或文件而导致无法删除,可先删除该文件夹中的子目录和文件,再删除文件夹。
  5.在任务管理器中结束Explorer.exe进程,然后在命令提示符窗口删除文件。
  6.如果你有安装ACDSee,FlashFXP,Nero,Total这几个软件,可以尝试在这几个软件中删除文件夹。

  二、高级解决方案:
  1.磁盘错误
  运行磁盘扫描,并扫描文件所在分区,扫描前确定已选上修复文件和坏扇区,全面扫描所有选项,扫描后再删除文件。
  2.预读机制:
  某些媒体播放中断或正在预览时会造成无法删除。在“运行”框中输入:REGSVR32 /U SHMEDIA.DLL,注销掉预读功能。或删除注册表中下面这个键值:[HKEY_LOCAL_MACHINE/SOFTWARE/Classes/CLSID/{87D62D94-71B3-4b9a-9489-5FE6850DC73E}/InProcServer32]。
  3.防火墙:
  由于反病毒软件在查毒时会占用正在检查的文件,从而导致执行删除时提示文件正在使用,这时可试着暂时关闭它的即时监控程序,或许可以解决。
  4.OFFice、WPS系列软件:
  OFFice的非法关闭也会造成文件无法删除或改名。重新运行该程序,然后正常关闭,再删除文件。
  5.借助WinRAR:
  右击要删除的文件夹,选择“添加到压缩文件”。在弹出的对话框中选中“压缩后删除源文件,”随便写个压缩包名,点确定。
  6.权限问题:
  如果是2000和xp系统,请先确定是否有权限删除这个文件或文件夹。
  7.可执行文件的删除:
  如果可执行文件的映像或程序所调用的DLL动态链接库文件还在内存中未释放,删除时就会提示文件正在使用,解决方法是删除系统的页面文件,Win98中是Win386.SWP,Win2000/XP是pagefile.sys。注意要在DOS下删除。
  8.文件粉碎法:
  使用文件粉碎机,如File Pulverizer,可以彻底删除一些顽固文件。

  三、制作一个无法删除的“文件保险箱”
  文件夹无法删除,未必就是不好的事情,如果把一些重要的文件放在这个目录中,不就可以避免误删了吗?一个文件名只包含空格的文件夹在Windows中是不允许创建和删除的,但在DOS下却可以创建文件名包含/的文件夹。

无法删除文件或文件夹
文章 ID : 320081
最后更新日期 : 2004年5月31日
版本 : 1.0
本页内容
概要
更多信息

概要
您可能无法删除 NTFS 文件系统卷上的文件或文件夹。本文介绍以下两方面内容:为什么您可能无法删除 NTFS 卷上的文件或文件夹,以及如何解决造成此问题的各种不同原因以消除此问题。
更多信息
注意:在内部,NTFS 将文件夹看作是特殊类型的文件。因此,本文中的“文件”一词可能指文件,也可能指文件夹。
原因 1:文件使用了访问控制列表
如果某个文件使用了访问控制列表 (ACL),您可能无法删除该文件。要解决此问题,请更改该文件上的权限。您可能需要拥有这些文件的所有权才能更改权限。

管理员具有取得任何文件所有权的隐含能力,即使未明确向他们授予针对此文件的任何权限也是如此。文件所有者具有修改文件权限的隐含能力,即使未明确向他们授予针对此文件的任何权限也是如此。因此,您可能需要取得对某个文件的所有权,赋予自己删除文件的权限,然后才能删除文件。


因为文件使用了不规范的 ACL 而不能使用某些安全工具显示或修改其权限
要解决此问题,请使用另一种工具(例如,Cacls.exe 的更新版本)。

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

根据文件打开的方式(例如以独占访问而不是共享访问方式打开),您可能无法删除使用中的文件。任何时候,您都可以使用多种工具来帮助确定拥有文件打开句柄的进程。

如欲进一步了解可用来确定拥有文件打开句柄的进程的工具,请单击下面的文章编号,查看 Microsoft 知识库中相应的文章:
242131 如何显示具有已打开文件的进程的列表
172710 如何使用 Windows NT 4.0 资源包中的 OH 工具
此问题的“症状”可能多种多样。您可能能够使用删除命令删除一个文件,但在打开该文件的进程释放该文件之前,该文件实际上并未删除。另外,您可能无法访问正在删除中的文件的安全对话框。要解决此问题,请确定具有打开句柄的进程,然后关闭此进程。


原因 3:文件系统损坏使您无法访问此文件
如果文件系统被破坏,则可能无法删除此文件。要解决此问题,请在磁盘卷上运行 Chkdsk 实用工具以纠正任何存在的错误。

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

有关如何使用 Chkdsk 实用工具的其他信息,请单击下面的文章编号,查看 Microsoft 知识库中相应的文章:
176646 错误信息:文件或目录损坏...
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 个文件夹),请转到解决方案 3。
解决方案 3:使用一个与文件夹具有相同深度的网络共享
如果解决方案 1 或解决方案 2 不太方便,或者不能解决问题,请创建一个网络共享,使其位于文件夹树中尽可能深的位置,然后通过访问此共享来重命名文件夹。
解决方案 4:使用能够遍历深路径的工具
许多 Windows 程序都假定最大路径长度少于 255 个字符;因此,这些程序只分配了足够容纳这些典型路径的内部存储。而 NTFS 则没有这一限制,它可以容纳更长的路径。

如果您在文件夹结构中一个已经相当深的位置创建一个共享,然后通过使用此共享在此位置之下创建一个深层结构,则可能会遇到此问题。某些在文件夹树上进行本地操作的工具可能无法遍历从根文件夹开始的整个文件夹树。您可能需要以特殊方式使用这些工具,以便它们能够遍历该共享位置。(CreateFile API 文档说明了一种在此情形下遍历整个文件夹树的方法。)

一般情况下,您可以通过使用创建文件的软件来管理这些文件。如果有一个程序,它可以创建超过 MAX_PATH 的文件,则一般情况下您可以使用此同一程序来删除或管理这些文件。您通常可以通过使用共享来删除在此同一共享上创建的文件。
原因 5:文件名包括 Win32 命名空间中的一个保留名称
如果文件名中包括 Win32 命名空间中的一个保留名称(例如“lpt1”),则可能无法删除此文件。要解决此问题,请使用非 Win32 程序重命名该文件。您可以使用 POSIX 工具或任何其他使用适当内部语法的工具来使用此文件。

另外,如果您使用特定的语法指定到该文件的路径,则可能能够使用一些内置的命令绕过典型的 Win32 保留名称检查。例如,如果在 Windows XP 中使用 del 命令,则在使用以下特殊语法指定到该文件的完整路径的情况下,可以删除名为“lpt1”的文件:
del //?/c:/文件路径/lpt1
有关在 Windows NT 和 Windows 2000 下删除具有保留名称的文件的其他信息,请单击下面的文章编号,查看 Microsoft 知识库中相应的文章:
120716 如何在 Windows 中删除具有保留名称的文件
有关在 Windows XP 下删除带有保留名称的文件的其他信息,请单击下面的文章编号,查看 Microsoft 知识库中相应的文章:
315226 如何在 Windows XP 中删除具有保留名称的文件
如果使用典型的 Win32 CreateFile 机制打开到某个文件的句柄,则某些文件名称是为旧式 DOS 设备保留的。为了向后兼容,不允许使用这些文件名,也不能使用典型的 Win32 文件调用来创建它们。不过,此问题并不是 NTFS 的一种限制。

通过使用遍历超过 MAX_PATH 的文件夹时所用的那种技巧,您可能能够使用 Win32 程序绕过在创建(或删除)文件时执行的典型名称检查。另外,有些 POSIX 工具不需接受这些名称检查。
原因 6:文件名包括 Win32 命名空间中的无效名称
如果文件名中包括一个无效名称,您可能无法删除该文件(例如,文件名有一个尾随空格,或一个尾随句点,或者文件名仅由一个空格组成)。要解决此问题,请用一种使用适当内部语法的工具删除此文件。您可以将“//?/”语法用于某些工具,以便对这些文件进行操作,例如:
del "//?/c:/包含尾随空格文件的路径.txt "
rd //./e:/lame 3.90/con /s/q 回车
导致此问题的原因与原因 5 类似。然而,如果使用典型的 Win32 语法打开名称中有尾随空格或尾随句点的文件,则尾随空格或句点在打开实际文件之前会被去掉。因此,如果在同一个文件夹中有两个分别名为“AFile.txt”和“AFile.txt ”的文件(注意文件名后面的空格),如果您尝试使用标准 Win32 调用打开第二个文件,实际上会打开第一个文件。同样,如果文件的名称仅是“ ”(一个空格字符),当尝试使用标准 Win32 调用打开它时,实际上会打开该文件的父文件夹。在此情况下,如果您尝试更改这些文件上的安全设置,您可能要么做不到,要么会意外更改其他文件上的设置。如果发生此行为,您可能会认为您对一个实际上具有限制性 ACL 的文件拥有操作权限。
多种原因
在某些情况下,您可能会遇到上述各种原因的不同组合,这会使删除文件的过程更复杂。例如,如果您作为计算机管理员登录,可能会同时遇到原因 1(您无权删除文件)和原因 6(文件名包含一个尾随字符,导致文件访问重定向到其他文件或者不存在的文件),您可能无法删除该文件。如果您尝试通过取得文件的所有权和添加权限来解决原因 1 的问题,可能仍然无法删除该文件,因为用户界面中的 ACL 编辑器由于原因 6 而无法访问到正确的文件。

在此情形中,您可以使用 Subinacl 实用工具和 /onlyfile 开关(此实用工具包括在资源工具包中)来更改文件的所有权和操作权限(若不更改则无法访问),例如:
subinacl /onlyfile "//?/c:/有问题文件的路径" /setowner=域/管理员 /grant=域/管理员=F
注意:此命令要在一行中输入;为便于阅读已换行。

此示例命令行修改了包含尾随空格的 C:/有问题文件的路径文件,使域/管理员帐户成了该文件的所有者并对该文件拥有完全控制权限。现在您可以使用 del 命令以及同一“//?/”语法来删除此文件。

如果还不行,试试老掉牙的“PCTOOLS”