从第二个驱动器中删除旧的Windows /程序文件?


23

我的电脑有很多额外的驱动器。其中大多数包含Windows和Program Files的旧副本。我的电脑称为“ PC”,而我的管理员用户称为“ Tim”。我已经将这些第二个驱动器的所有权分配给用户“ PC \ Tim”,并且还赋予了用户“ PC \ Tim”对驱动器的完全控制权。然后,我尝试删除这些驱动器上的Windows或Program Files文件夹,并收到消息。

“您需要获得PC \ Tim的许可才能对此文件夹进行更改。”

这些文件夹的当前所有者列为“ Tim(PC \ Tim)”。这些文件夹的有效权限列出了该用户的所有权利。

微软社区上荒谬的“答案”当然提供了诸如“使用磁盘清理”(这是一个未经公允的答案)或“只是重新格式化驱动器”之类的东西(格式化避免了问题而不是解决了)。

删除这些旧文件的正确步骤是什么?

Answers:


55
  1. 使用管理权限打开命令提示符。
  2. 一次运行以下命令(用要删除的文件夹更改“ Z:\ Program Files”):

    takeown /F "Z:\Program Files" /A /R /D Y
    icacls "Z:\Program Files" /T /grant administrators:F
    rd /s /q "Z:\Program Files"
    

注1-OS语言:takeown ... /D Y输入Y代表“是”,并且根据OS语言而有所不同。Program Files文件夹的名称也可能不同。

注意2-Windows的较旧版本:如果icaclsrd不支持,请尝试使用caclsrmdir代替

说明和文件:

问题可能是您在文件夹及其内容的自由访问控制列表(DACL)中没有正确的权限 。DACL标识允许或拒绝访问安全对象的受托者。因此,仅授予文件夹所有权可能是不够的,但是您还需要在DACL中授予权限。您可以使用icacls命令授予权限,如上面的示例所示。访问控制列表和DACL说明

takeown takeown文档 管理员通过将管理员组作为所有者来恢复对目录及其先前拒绝的内容的访问。/ F [目录]指定哪个目录,/ A授予管理员组所有权,/ R作为对目录,所有文件和子目录的递归操作执行它,/ D在用户不具有“列表文件夹”权限时禁止显示确认提示后面的Y选项将获得目录的所有权。(注意:Y选项可能因操作系统语言而异)。

icacls icacls文档 向管理员组授予对目录的完全访问DAC权限。[目录]指定哪个目录,/ T对目录和子目录中的所有指定文件执行操作,/ grant通过:F授予指定的用户访问权限,从而提供完全访问权限。(注意:组名称管理员可能因操作系统语言而异)

rd rd文档 删除目录及其所有子目录和文件。/ s删除指定的目录及其子目录(包括所有文件),/ q指定安静模式,因此不会提示您进行确认,[directory]指定要删除的目录。


6
对于该Windows文件夹,只需将其重命名为,Windows.old然后使用磁盘清理工具/程序就可以将其删除
SuperDJ,

2
Cacls现在已弃用,请使用Icacls
Tharindu Sathischandra

1
@Tharindu谢谢,我现在用icacls更新了答案。请验证它看起来是否正确
Arne H. Bitubekk '19

1
rmdir现在 rd
RaisingAgent

@RaisingAgent感谢您的抬头,我用rd而不是rmdir更新了代码片段
Arne H. Bitubekk '19

22

对我有用的是此建议的简化版本:

  1. 重命名Windows文件夹为Windows.old
  2. 从开始菜单运行磁盘清理
  3. 选择包含该Windows.old文件夹的驱动器
  4. 以前的“ Windows安装”,然后单击“确定”

这适用于“ Windows”文件夹。Arne HD的3个命令确实可用于其他一些文件夹,例如“ Program Files”和ProgramData。
gus

聪明!而且极其简单。像魅力一样工作。
oneavi

1
如果将名称更改为Windows.old,它将与任何文件夹一起使用。太棒了
AdnanG

这是最好的方法,我尝试了这里介绍的3种方法,而这是最好的方法。
RaRdEvA

3

这在Windows 10西班牙语中有效:

set del_folder=F:\Program Files
takeown /f "%del_folder%" /r /d S
icacls "%del_folder%" /grant administradores:F /T
rmdir /s /q "%del_folder%"

takeown命令中,您必须在西班牙语的“Sí”末尾使用“ S”,而不是“ Yes”(英语)使用“ Y”。

对于该icacls命令,您需要使用“ administradores”(西班牙语),而不要使用“ administrators”(英语)。


1

只需将Program Files重命名为Windows.old并运行磁盘清理即可清除系统文件。无法删除的任何文件夹都可以使用相同的技巧。


1

注意:现在,考虑到这一点,您应该可以从第4步开始,只需单击“更改权限”按钮即可获得访问权限。我已经测试过,但是没有要删除的目录。

在Windows 10上(可能也适用于Windows 7和8):

  1. 右键单击文件夹->属性->安全->高级。
  2. 单击所有者旁边的更改(在顶部)。在框中输入您的用户名,然后单击检查名称。(应转换为MACHINENAME \ USERNAME样式。)
  3. 点击确定,确定,确定以退出安全性选项。

您现在应该拥有该目录。

  1. 右键单击文件夹->属性->安全->高级。(再次。)
  2. 在权限列表中找到“用户”。单击它,选择“编辑”,然后选择“完全控制”。
  3. 在底部,选中“替换所有子权限条目...”。
  4. 单击确定,然后在警告框中选择是。等待计算机应用新权限。

您现在应该具有删除文件所需的权限。这样做。(已在Program Files文件夹和Windows.old上进行了测试。)


经过测试,有效!谢谢!
GoTo

0

(对于Windows文件夹)如果可以,将名称更改为windows.old。然后打开磁盘清理,选择驱动器并单击“确定”。然后单击“清理系统文件”,它将删除该文件夹

现在,如果您无法重命名该文件夹,请下载解锁程序,将其打开并选择该文件夹,然后单击“重命名”并将名称更改为Windows.old,然后运行磁盘清理。:D


-2

创建您所选择的Linux发行版的活动USB,启动该USB,安装驱动器,然后以这种方式清理它们。从字面上看,这是最简单的方法。


1
我认为问题更多是关于文件权限/所有权,而不仅仅是删除文件。如果有可能使用Windows工具完成任务,为什么有人要下载500MB以上的内存并创建可引导的USB?我也不是100%确信每个“发行版”都可以正确处理所有版本的NTFS。NTFS不是Linux文件系统。您将使用Windows在Linux ext4文件系统上操作文件吗?
snayob '16

Linux内核可以处理50多个文件系统。而且,从字面上看,这是最简便的方法。也许不是该用户想要的东西,但是很容易。
Steven Perszyk '16

1
最简单?正在下载1GB并刻录到USB?这真的比发出3个命令容易吗?您似乎是真正的Linux专家;)
snayob

1
我不太确定那个随机的,完全错误的“事实”与手头的讨论有什么关系,但谢谢您的启发。如果您想就为什么选择GNU / Linux系统进行个人讨论,我很乐意在其他地方进行讨论。除此之外,这场讨论已成为话题之外的话题
Steven Perszyk '16

1
没有兴趣讨论“最简便的方法”。您的陈述是在喊一个完全错误的事实。
snayob

-2

您可能已经拥有同一用户的所有权,因为它是托管系统的先前磁盘。删除该所有权,然后再次添加(相同)。例如,如果用户PETER拥有所有权,请将其删除,将其应用于所有子文件夹,然后再次添加PETER,然后应用。然后,您应该能够首先重命名要删除的文件夹,然后再将其删除。

干杯


没有根据的猜测。NTFS文件系统将用户帐户SID与访问控制列表一起使用,而不是用户帐户显示名称。

-2

假定必须在第二个驱动器上进行删除:对我而言,刚刚起作用的是:

  1. 安装Lockhunter(免费应用程序以解锁和重命名锁定的文件),并以管理员权限运行Lockhunter;

  2. 重命名要删除的文件夹为“ Windows.old”(重命名后,您仍然会读取原始名称,但是不必担心重命名会被Lockhunter在其主窗口中确认);

  3. 以管理权限运行“磁盘清理”;

  4. 选择要删除的文件夹,该文件夹将在“磁盘清理”中显示为“ Windows.old”,然后将其删除。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.