How can I programatically remove the readonly attribute from a directory in C#?
How can I programatically remove the readonly attribute from a directory in C#?
Here's a good link to examples of modifying file attributes using c#
http://www.csharp-examples.net/file-attributes/
based on their example, you can remove the Read Only attribute like this (I haven't tested this):
File.SetAttributes(filePath, File.GetAttributes(filePath) & ~FileAttributes.ReadOnly);
If you're attempting to remove the attribute of a file in the file system, create an instance of the System.IO.FileInfo class and set the property IsReadOnly to false.
FileInfo file = new FileInfo("c:\\microsoft.text");
file.IsReadOnly = false;
And the version with everything at once if something did not work
this._path = System.IO.Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), "My App Settings");
if (!Directory.Exists(this._path))
{
Directory.CreateDirectory(this._path);
DirectoryInfo directoryInfo = new DirectoryInfo(this._path);
directoryInfo.Attributes &= ~FileAttributes.ReadOnly;
FileSystemInfo[] info = directoryInfo.GetFileSystemInfos("*", SearchOption.AllDirectories);
for (int i = 0; i < info.Length; i++)
{
info[i].Attributes = FileAttributes.Normal;
}
}
Got it finally. ;)
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");
}
}