Ich habe ein merkwürdiges Problem, bei dem ich keine Dateien mit einer leeren ACL entfernen kann:
>icacls "avfilter-7_ms.dll" /grant Administrator:F
avfilter-7_ms.dll: Access is denied.
So sieht die Datei aus:
Keine Gruppen oder Benutzer haben Zugriff auf dieses Objekt.
Wenn ich jedoch die Windows-Sicherheitsbenutzeroberfläche verwende, kann ich mir selbst Vollzugriff auf das Objekt gewähren. Ich muss Tausende löschen. Gibt es eine Möglichkeit, dies zu tun? icacls scheint diese Dateien überhaupt nicht anfassen zu können.
Antwort1
Habe ein bisschen mit .NET herumgespielt und konnte den ACL-Eintrag hinzufügen, sodass ich eine einzelne Datei löschen kann (benötigt als Nächstes ein ForEach bei 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);