Windows 无法删除文件夹 —— 访问被拒绝 / 因为目录不是空的

在日常使用 Windows 10 时,有时会遇到删除很普通的文件夹时提示“访问被拒绝”,以管理员权限重试后依然提示没有权限。如果使用命令行删除,则会提示“无法删除文件夹 XXX,目录不是空的。”。

本文将介绍其原因并提供解决方案。


删除文件夹遭到拒绝

有时我们在删除一个很普通的文件夹时,会提示需要提升权限才能删除。

需要提升权限
▲ 需要提升权限

其实按照经验,这种问题与权限并没有什么关系。尤其是以上这种 NuGet 缓存目录下的文件夹,和权限更是扯不上关系。

所以其实点了“继续”也并没有什么左右,依然是没完没了的错误。

需要访问权限
▲ 需要访问权限

如果我 一层层进入到文件夹的里面,然后 先删除文件,再一层层 退出来删掉文件夹,那么这个文件夹就能被正常删除掉。

这至少能说明,并没有文件或文件夹处于被占用的状态!!!

所以这个时候我考虑使用命令行删除:

使用命令行删除
▲ 使用命令行删除

命令行删除时,给了一个错误提示:

rd : Directory C:\Users\lvyi.nuget\packages\walterlv.package.demo\12 .0.27-alpha\src\Demo_\MagicalDemo_\Magical_ cannot be removed because it is not empty.

意思是说,命令行在删除其中一个子文件夹的时候出错,原因是:“目录不是空的。”

如果继续翻看下面的错误提示,发现这是一个按文件夹递归的提示。

解决方案

在网上搜索“目录不是空的”能得到不少结果,而且提供了不少解决方案:

然而,无论敲入什么样的命令,都没有用。这时我抱着试一试的心态去搜索框(小娜)中搜索“资源监视器”或直接输入 resmon 命令打开资源监视器。在“关联的句柄”中我输入了无法删除的文件夹名称,才终于找到了根本原因:

资源监视器
▲ 资源监视器

结束掉可能用到了这个版本 NuGet 包的 Visual Studio 后,文件夹可以被正常删除掉了。

删除文件夹
▲ 因为删除太快,好不容易抓到的一张图

所以什么“需要管理员权限”啊,什么“目录不是空的”,都是假的!!!真正的原因还是文件夹被占用。

本文会经常更新,请阅读原文: https://walterlv.com/post/delete-directory-that-is-not-empty.html ,以避免陈旧错误知识的误导,同时有更好的阅读体验。

知识共享许可协议 本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。欢迎转载、使用、重新发布,但务必保留文章署名 吕毅 (包含链接: https://walterlv.com ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请 与我联系 (walter.lv@qq.com)