Estou com um problema estranho em que não consigo remover nenhum arquivo com uma ACL vazia:
>icacls "avfilter-7_ms.dll" /grant Administrator:F
avfilter-7_ms.dll: Access is denied.
Esta é a aparência do arquivo:
Nenhum grupo ou usuário tem acesso a este objeto.
No entanto, quando uso a interface de segurança do Windows, posso me adicionar como Controle Total ao objeto. Tenho milhares para deletar; existe uma maneira de fazer isso? icacls parece ser completamente incapaz de mexer nesses arquivos.
Responder1
Brinquei um pouco com o .NET e consegui adicionar a entrada ACL para que eu pudesse excluir um único arquivo (precisa de um ForEach em Get-ChildItem a seguir):
$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);