Entfernen von schreibgeschützten Attributen in einem Verzeichnis mithilfe von C #

Ich konnte das schreibgeschützte Attribut für eine Datei mit dem folgenden Codeausschnitt erfolgreich entfernen:

In main.cs

FileSystemInfo[] sqlParentFileSystemInfo = dirInfo.GetFileSystemInfos();

foreach (var childFolderOrFile in sqlParentFileSystemInfo)
{
    RemoveReadOnlyFlag(childFolderOrFile);
}

private static void RemoveReadOnlyFlag(FileSystemInfo fileSystemInfo)
{
    fileSystemInfo.Attributes = FileAttributes.Normal;
    var di = fileSystemInfo as DirectoryInfo;

    if (di != null)
    {
        foreach (var dirInfo in di.GetFileSystemInfos())
            RemoveReadOnlyFlag(dirInfo);
    }
}

Leider funktioniert das bei den Ordnern nicht. Nach dem Ausführen des Codes, wenn ich in den Ordner gehe, mit der rechten Maustaste klicke und Eigenschaften mache, sehe ich Folgendes:

Das schreibgeschützte Flag ist weiterhin aktiviert, obwohl es aus den darunter liegenden Dateien entfernt wurde. Dadurch schlägt das Löschen dieses Ordners fehl. Wenn ich das Flag manuell entferne und den Prozess (eine Fledermausdatei) erneut ausführe, kann die Datei gelöscht werden (ich weiß also, dass dies kein Problem mit der Fledermausdatei ist).

Wie entferne ich dieses Flag in C #?

Antworten auf die Frage(20)

Ihre Antwort auf die Frage