icacls:“访问被拒绝”尝试使用空 ACL 更改拥有的文件

icacls:“访问被拒绝”尝试使用空 ACL 更改拥有的文件

我遇到了一个奇怪的问题,我无法删除任何具有空 ACL 的文件:

>icacls "avfilter-7_ms.dll" /grant Administrator:F
avfilter-7_ms.dll: Access is denied.

该文件如下所示:

关联

没有任何组或用户可以访问此对象。

但是,当我使用 Windows 安全 UI 时,我能够将自己添加为对象的完全控制者。我有数千个文件需要删除;有办法吗?icacls 似乎完全无法触及这些文件。

答案1

使用 .NET 稍微玩了一下,能够添加 ACL 条目,这样我就可以删除单个文件(接下来需要在 Get-ChildItem 上使用 ForEach):

$rule = new-object System.Security.AccessControl.FileSystemAccessRule "Administrator", "FullControl", "Allow";
$p = "bad_file.txt"
$acl = [System.IO.File]::GetAccessControl($p);
$acl.SetAccessRule($rule);
[System.IO.File]::SetAccessControl($p, $acl);

相关内容