Removendo o atributo somente leitura em um diretório usando C #
Consegui remover com êxito o atributo somente leitura em um arquivo usando o seguinte snippet de código:
Em 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);
}
}
Infelizmente, isso não funciona nas pastas. Depois de executar o código, quando vou para a pasta, clique com o botão direito do mouse e faça propriedades, eis o que vejo:
O sinalizador somente leitura ainda está marcado, embora o tenha removido dos arquivos abaixo dele. Isso faz com que um processo falhe ao excluir esta pasta. Quando eu removo manualmente o sinalizador e executo o processo (um arquivo bat), ele pode excluir o arquivo (para que eu saiba que isso não é um problema com o arquivo bat)
Como faço para remover esse sinalizador em c #?