Retrait attribut lecture seule sur un répertoire à l'aide de C#

J'ai été avec succès en mesure de supprimer attribut lecture seule sur un fichier à l'aide de l'extrait de code suivant:

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

Malheureusement, cela ne fonctionne pas sur les dossiers. Après l'exécution du code, lorsque je vais dans le dossier, clic droit et faire propriétés, voici ce que je vois:

Retrait attribut lecture seule sur un répertoire à l'aide de C#

La lecture seule drapeau est encore vérifié mais il l'a supprimé à partir de fichiers d'en-dessous. Ce sont les causes d'un échec du processus de la suppression de ce dossier. Quand j'ai supprimer manuellement le drapeau et relancez le processus (un fichier bat), il est capable de supprimer le fichier (donc je sais que ce n'est pas un problème avec le fichier bat)

Comment puis-je supprimer ce drapeau en C#?

OriginalL'auteur DotnetDude | 2010-10-05