通常情况下,管理员具有取得任何文件所有权的隐含能力,文件所有者也具有修改文件权限的隐含能力。不过,这些默认的权限是可以被修改的。
要解决因ACL导致文件无法删除的问题,就必须以具有相应权限的用户身份登录,或者是赋予自己删除文件的权限,然后才能删除文件。要注意的是,操作者必须拥有这些文件的所有权才能更改权限。如果是因为文件使用了不规范的ACL而不能使用某些安全工具显示或修改其权限时,可以尝试使用命令行工具Cacls.exe进行修改。
原因四:文件名使用了一个保留名称
众所周知,像AUX、LPT1这样的名称是为旧式DOS设备保留的。为了向后兼容,在Windows中不允许使用这些文件名,也不能使用典型的Win32文件调用来创建它们。反之,如果文件名是Win32命名空间中的一个保留名称,则同样可能无法删除此文件。
要解决此类问题,可以在Linux或其他非Windows的操作系统下重命名或删除该文件。另外,如果能够使用特定的语法指定到该文件的路径,也可以使用一些内置的命令绕过典型的Win32保留名称检查。例如,在Windows
XP中使用以下命令,可以删除名为“lpt1”的文件(Del命令后面加上“?”来避免Windows检查文件名的合法性):
Del c:[/URL]文件路径lpt1
原因五:无效的文件名称
如果文件名中包括一个无效名称,例如文件名有一个尾随空格,或一个尾随句点,或者文件名仅由一个空格组成,同样可能无法删除该文件。值得一提的是,如果使用典型的Win32语法打开名称中有尾随空格或尾随句点的文件,则尾随空格或句点在打开实际文件之前会被去掉。因此,如果在同一个文件夹中有两个分别名为“File.txt”和“File.txt
”的文件(注意第二个文件名后面的空格),当使用标准Win32调用打开第二个文件时,实际上会打开第一个文件。同样,如果文件的名称仅是“
”(一个空格字符),当尝试使用标准Win32调用打开它时,实际上会打开该文件的父文件夹。在此情况下,如果尝试更改这些文件上的安全设置,就有可能会意外更改其他文件上的设置。
与解决文件名使用保留名称的方法类似,可以使用一种适当的内部语法删除此文件。例如要删除包含尾随空格的文件,可以使用如下命令:
Del c:文件路径(尾随空格的文件名)