Как я могу программно удалить атрибут "только для чтения" из каталога в C#?
var di = new DirectoryInfo("SomeFolder");
di.Attributes &= ~FileAttributes.ReadOnly;
Если вы пытаетесь удалить атрибут файла в файловой системе, создайте экземпляр класса System.IO.FileInfo и установите свойство IsReadOnly в false.
FileInfo file = new FileInfo("c:\\microsoft.text");
file.IsReadOnly = false;
Вот хорошая ссылка на примеры изменения атрибутов файлов с помощью c#
http://www.csharp-examples.net/file-attributes/
основываясь на их примере, вы можете удалить атрибут Read Only следующим образом (я не тестировал это):
File.SetAttributes(filePath, File.GetAttributes(filePath) & ~FileAttributes.ReadOnly);
Наконец-то разобрался. ;)
class Program
{
static void Main(string[] args)
{
DirectoryInfo di = new DirectoryInfo("c:\\test");
FileAttributes f = di.Attributes;
Console.WriteLine("Directory c:\\test has attributes:");
DecipherAttributes(f);
}
public static void DecipherAttributes(FileAttributes f)
{
// To set use File.SetAttributes
File.SetAttributes(@"C:\test", FileAttributes.ReadOnly);
if ((f & FileAttributes.ReadOnly) == FileAttributes.ReadOnly)
Console.WriteLine("ReadOnly");
// To remove readonly use "-="
f -= FileAttributes.ReadOnly;
if ((f & FileAttributes.ReadOnly) == FileAttributes.ReadOnly)
Console.WriteLine("ReadOnly");
else
Console.WriteLine("Not ReadOnly");
}
}