views:

472

answers:

3

I can't seem to change the read only flag on a file. I've tried this on Vista and XP with the same result, so I don't think it's a UAC related issue.

Nothing I've done seems to work though. See the sample below. Can someone tell me what I'm doing wrong?

public bool UpdateResFile(string fileName, string language, string objectName, string NewValue)
{
    FileInfo fi = new FileInfo(fileName); 
    try
    {
        //Do Stuff                
        xDoc.Save(fileToUpdate);
    }
    catch (UnauthorizedAccessException)
    {
        //fi.IsReadOnly = false;
        File.SetAttributes(fileName, FileAttributes.Normal);
        //fi.Attributes -= FileAttributes.ReadOnly;
        return UpdateResFile(fileName, language, objectName, NewValue);
    }
    catch (System.Exception ex)
    {
        Console.WriteLine(ex.Message);
        return false;
    }
    return true;
}
+2  A: 

I think what you are looking for is described in the user content section at the bottom of this msdn article

http://msdn.microsoft.com/en-us/library/system.io.file.setattributes.aspx

Sebastian Dietz
+1  A: 

You are trying to change read-only flag on file WHEN you get an UnauthorisedAccessException. You can't do that. All you can (and should) do is to notify user that he/she has no access rights to save file there, and offer to save somewhere else.

dmajkic
That did it!! I moved the check higher up and it worked great.
JoelHess
If my answer helped you, just clicko on Check mark next to it to accept it.
dmajkic
+1  A: 

Is not possible to change the read only attribute of a file at UnauthorizedAccessException cause the application is executing with the permissions that you have in the computer.

If you dont have permissions to change normally this file to read only, your application will not change this attribute either.

Kind Regards. Josema.

Josema