icacls: „Zugriff verweigert“ beim Versuch, eigene Dateien mit leerer ACL zu ändern

icacls: „Zugriff verweigert“ beim Versuch, eigene Dateien mit leerer ACL zu ändern

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:

Verknüpfung

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);

verwandte Informationen