У меня возникла странная проблема: я не могу удалить ни одного файла с пустым ACL:
>icacls "avfilter-7_ms.dll" /grant Administrator:F
avfilter-7_ms.dll: Access is denied.
Вот как выглядит файл:
Ни одна группа или пользователь не имеет доступа к этому объекту.
Однако, когда я использую пользовательский интерфейс безопасности Windows, я могу добавить себя в качестве полного контроля к объекту. Мне нужно удалить тысячи; есть ли способ сделать это? icacls, похоже, совершенно не может тронуть эти файлы.
решение1
Немного поигравшись с .NET, я смог добавить запись ACL, чтобы можно было удалить один файл (далее нужен ForEach для Get-ChildItem):
$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);