空の ACL を持つファイルを削除できないという奇妙な問題が発生しています。
>icacls "avfilter-7_ms.dll" /grant Administrator:F
avfilter-7_ms.dll: Access is denied.
ファイルは次のようになります:
このオブジェクトにアクセスするグループまたはユーザーはありません。
ただし、Windows セキュリティ UI を使用すると、オブジェクトにフル コントロールとして自分自身を追加できます。削除するファイルが何千もありますが、これを行う方法はありますか? icacls はこれらのファイルにまったく触れられないようです。
答え1
.NET を少しいじってみたところ、ACL エントリを追加して 1 つのファイルを削除できるようになりました (次に 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);