我有一個奇怪的問題,我無法刪除任何具有空 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);