我有一个由 MSBuild 生成的文件夹app.publish
。我的构建脚本经常无法删除它,并抱怨它没有必要的权限。今天我在构建脚本之外测试了它,发现我甚至无法打开它。
如果我尝试打开它,我会收到以下消息:
“位置不可用。拒绝访问。”
因此我尝试更改权限,但即使作为管理员也无法看到所有者是谁:
所以我以为可能是 Explorer 的问题,所以我尝试使用 PowerShell。不幸的是,那里的访问也被拒绝。我尝试使用Get-ACE -Path app.publish
,但它也不起作用:“访问被拒绝。”我也尝试了icacls app.publish /grant ijhbvhbv:f
,但它也失败了,并显示“访问被拒绝。”我以普通用户和管理员的身份尝试了这两个命令。
最后,我尝试删除父目录,但被告知必须“提供管理员权限才能删除此文件夹”。当我这样做时,我收到一个奇怪的错误:“您需要 FWEE-ERIC-WIN8\ijhbvhbv 的权限才能更改此文件夹”。 “FWEE-ERIC-WIN8\ijhbvhbv” 是我自己的帐户。所以看起来我确实是该文件夹的所有者,但只有当我尝试以管理员身份与其交互时才会这样。
SU 上有关此问题的其他问题认为 UAC 是问题的潜在根源,但无论 UAC 设置为何值,问题都是一样的。
答案1
在花了很长时间解决类似问题之后,我终于明白了。
发生这种情况的文件夹如下:
- 没有有效的所有者
- 被锁定,因为某些应用程序仍在使用它们。
- 已被删除。
该文件夹处于“僵尸”状态,因为它已被删除,但仍被某个进程使用。您需要找到使用该文件夹的进程并将其关闭,或者,如果您不知道是哪个进程,请重新启动计算机。
文件夹将消失。如果删除了整个子树,但只使用了其中的一个文件夹,则可能需要返回并手动清理子树。这应该在管理员权限下有效。
答案2
解决文件锁定的几种可能方法:
系统或应用程序正在锁定它;使用以下工具CrystalRich LockHunter找出是什么,如果你愿意的话,就解锁它。有时需要重新启动计算机才能放弃所有锁,特别是当该对象由网站使用时。
设置文件夹的权限有点棘手;有多个步骤。请参阅如何授予完全权限...。
其他一些可能性:
有些“文件夹”实际上是符号链接,例如C:\ProgramData\应用程序数据;这些都无法访问。但是,由于您之前可以访问该文件夹,因此这种情况似乎不太可能发生。
MS 最近开始使用受信任的安装程序帐户,所以即使管理员也无法触碰某些文件和文件夹(尽管从您的描述来看,这可能不是问题的原因)。