Eliminar el atributo de solo lectura en un directorio usando C #

Pude eliminar con éxito el atributo de solo lectura en un archivo usando el siguiente fragmento de código:

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

Desafortunadamente, esto no funciona en las carpetas. Después de ejecutar el código, cuando voy a la carpeta, hago clic derecho y hago propiedades, esto es lo que veo:

La marca de solo lectura todavía está marcada, aunque la eliminó de los archivos debajo de ella. Esto hace que un proceso falle al eliminar esta carpeta. Cuando elimino manualmente el indicador y vuelvo a ejecutar el proceso (un archivo bat), puede eliminar el archivo (así que sé que esto no es un problema con el archivo bat)

¿Cómo elimino esta bandera en C #?

Respuestas a la pregunta(10)

Su respuesta a la pregunta