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);

相關內容