Я успешно смог удалить атрибут только для чтения в файле, используя следующий фрагмент кода:
В 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);
}
}
К сожалению, это не работает в папках. После запуска кода, когда я иду в папку, щелкните правой кнопкой мыши и сделаю свойства, вот что я вижу:
Флаг только для чтения по-прежнему проверяется, хотя он удаляет его из файлов под ним. Это заставляет процесс не удалять эту папку. Когда я вручную удаляю флаг и повторно запускаю процесс (файл bat), он может удалить файл (поэтому я знаю, что это не проблема с файлом bat)
Как удалить этот флаг в С#?