Изменение атрибута «Только чтение» для файла - PullRequest
1 голос
/ 29 января 2009

Я не могу изменить флаг только для чтения в файле. Я пробовал это на 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 ]

2 голосов
/ 29 января 2009

Невозможно изменить атрибут «только для чтения» файла в UnauthorizedAccessException, так как приложение выполняется с разрешениями, которые есть у вас на компьютере.

Если у вас нет прав для обычного изменения этого файла только для чтения, ваше приложение также не изменит этот атрибут.

С уважением. Josema.

2 голосов
/ 29 января 2009

Я думаю, что вы ищете, описано в разделе пользовательского контента в нижней части этой статьи MSDN

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

1 голос
/ 29 января 2009

Вы пытаетесь изменить флаг только для чтения в файле, когда вы получаете исключение UnauthorisedAccessException. Вы не можете сделать это. Все, что вы можете (и должны) сделать, это уведомить пользователя о том, что он / она не имеет прав доступа для сохранения файла, и предложить сохранить его в другом месте.

...