更改文件的只读属性

时间:2009-01-29 14:01:44

标签: .net readonly fileinfo

我似乎无法更改文件上的只读标志。我在Vista和XP上尝试了相同的结果,因此我不认为这是与UAC相关的问题。

我所做的一切似乎都没有效果。请参阅下面的示例。有人能告诉我我做错了吗?

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;
}

3 个答案:

答案 0 :(得分:2)

我认为您正在寻找的内容在本msdn文章

底部的用户内容部分中有所描述

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

答案 1 :(得分:2)

无法在UnauthorizedAccessException中更改文件的只读属性,因为应用程序正在使用您在计算机中拥有的权限执行。

如果您没有权限将此文件正常更改为只读,则您的应用程序也不会更改此属性。

亲切的问候。 Josema。

答案 2 :(得分:1)

当您收到UnauthorisedAccessException时,您正尝试更改文件上的只读标志。你不能这样做。您可以(而且应该)做的就是通知用户他/她没有访问权限来保存文件,并提供保存在其他地方。