解决0x80070091:文件夹不为空无法删除系统文件

作者:技术拾光

时间:2026-07-16

浏览:629

错误0x80070091“目录不是空的”因NTFS元数据异常,如损坏卷影副本或非法子项。可通过vssadmin删除卷影副本、icacls获取权限、Robocopy镜像清空目录或PowerShell强制删除解决。

文章目录

许多用户都曾遇到这样的困境:想要删除系统残留的文件夹,比如 Windows.old、System Volume Information 或 WindowsApps,却收到系统弹窗提示“错误 0x80070091:目录不是空的”。明明打开文件夹后里面空空如也,连隐藏文件都显示出来,但删除操作就是无法执行。别着急怀疑自己的操作手法——这背后的问题根源在于 NTFS 文件系统的底层元数据。系统将某个不可见的条目(如损坏的卷影副本、非法命名的子项或尚未释放的句柄)标记为“非空”,因此拒绝执行删除命令。

解决0x80070091:文件夹不为空无法删除系统文件

方法一:使用 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 进程后再试。

实用工具推荐

电子包浆

绿化、压缩、噪点和虚拟水印,自由调节做旧程度。

使用 ›
图片压缩

选择画质和输出格式,预览压缩前后的大小。

使用 ›