电脑提示:0x80070091 文件夹不为空导致无法删除系统文件

作者:袖梨 2026-07-16
Windows.old等系统文件夹无法删除是因NTFS元数据异常或卷影副本锁定,需先用vssadmin delete shadows /all /quiet清理卷影副本,再通过takeown与icacls获取权限,最后用RD /S /Q ?路径强制删除。

你在尝试删除系统相关文件夹(比如 System Volume Information、WindowsApps 或残留的 Windows.old)时,弹出“错误 0x80070091:目录不是空的”,明明点开看全是空的、连隐藏项都显示了,还是删不掉——这不是权限不够或操作失误,是 NTFS 底层元数据把某个不可见条目(如损坏的卷影副本、非法命名的子项、或未释放的句柄)记作“非空”,系统因此拒绝执行删除。

先用 vssadmin 清理卷影副本,解除还原点级锁定

系统还原点和卷影副本常驻 System Volume Information 内部,它们不是普通文件夹,而是由 VSS(卷影复制服务)管理的元数据容器。一旦某个副本损坏,系统会持续将其视为“有内容”,导致整个父路径无法清空。

点击任务栏搜索框 → 输入 cmd → 右键“命令提示符” → “以管理员身份运行”。

输入 vssadmin list shadows 回车,确认当前所有卷影副本列表;若输出为空或报错,说明已有异常。

直接执行:vssadmin delete shadows /all /quiet,回车后等待返回“已成功删除所有阴影副本”。

这一步会清空所有还原点快照索引,【不会影响当前系统运行,但会删除所有可回滚的还原点】。执行完立刻尝试右键删除目标文件夹——很多情况下此时已能成功。

手动获取 System Volume Information 完全控制权并清理残留子项

Windows 默认禁止用户访问 System Volume Information,里面那些名字像 {a1b2c3d4-e5f6-7890-g1h2-i3j4k5l6m7n8} 的子文件夹,就是旧还原点留下的元数据残留。它们可能大小为 0 字节、创建时间早于系统安装日,却因权限锁死而无法被自动回收。

在刚才的管理员命令提示符中,依次执行:

icacls "C:System Volume Information" /grant administrators:F /t

attrib -h -r -s "C:System Volume Information"

打开文件资源管理器,地址栏直接粘贴 C:System Volume Information 并回车。如果仍提示“拒绝访问”,说明上一步赋权未生效,需重启命令提示符重试。

找到名称含 { 和 } 的子文件夹,逐一右键 → “属性” → 查看“大小”和“修改日期”。优先删除那些大小为 0 字节、修改时间早于你最近一次系统更新的项。

【切勿删除整个 System Volume Information 文件夹,只删其内部特定 GUID 命名的子项】

用 Robocopy 镜像清空 WindowsApps 或嵌套顽固目录

当文件夹内存在 NTFS 循环链接、超长路径或损坏的短文件名时,常规删除会卡在解析阶段。Robocopy 的 /MIR 参数不校验内容,只强制将目标结构同步为“源为空”的状态,本质是底层重写目录树。

方法一:PowerShell 管理员模式(推荐)

进入目标文件夹所在父目录(例如 C:Program Files),按住 Shift 键右键空白处 → “在此处打开 PowerShell 窗口(管理员)”。

在同一目录下新建一个名为 Empty 的空白文件夹。

执行:robocopy .Empty .WindowsApps /MIR(把 WindowsApps 替换为你实际要删的文件夹名)。

等待输出末尾出现 已复制: 0 且无红色报错后,刷新资源管理器——原文件夹图标通常立即消失,或可直接右键删除。

方法二:批处理一键执行(适配中文路径/空格)

在目标文件夹同级新建记事本,粘贴以下内容:

@echo off
mkdir Empty
robocopy "Empty" "%~n1" /MIR
rmdir /s /q "Empty"
pause

保存为 clean.bat,然后把要删的文件夹拖到该 bat 文件图标上释放——自动完成三步,无需手动输路径。

PowerShell 强制穿透删除,绕过所有 Win32 层限制

第一步:以管理员身份运行 PowerShell

按 Win + R → 输入 powershell → 按 Ctrl + Shift + Enter 确认。

第二步:获取所有权并赋权

粘贴执行:takeown /f "C:Windows.old" /r /d y & icacls "C:Windows.old" /grant administrators:F /t(把路径换成你的目标文件夹完整路径)。

第三步:强制删除

粘贴执行:CMD /C "RD /S /Q ?C:Windows.old"(【必须用 ? 前缀,否则路径超长或含特殊字符时会失败】)。

命令无任何输出即表示成功。若仍提示“拒绝访问”,说明有进程正在占用该路径,需配合 Process Hacker 终止 SkyHost.exe 或 TrustedInstaller 进程后再试。

相关文章

精彩推荐