Mudando um atributo somente leitura em um arquivo
Pergunta
Eu não consigo mudar a única bandeira a ler um arquivo. Eu tentei isso no Vista e XP com o mesmo resultado, então eu não acho que é uma questão relacionada UAC.
Nada do que eu fiz parece funcionar embora. Veja o exemplo abaixo. Alguém pode me dizer o que estou fazendo de errado?
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;
}
Solução
Não é possível mudar o único atributo de um arquivo ler em UnauthorizedAccessException causa a aplicação está em execução com as permissões que você tem no computador.
Se você não tem permissões para alterar normalmente este arquivo para somente leitura, a sua aplicação não vai mudar esse atributo também.
Atenciosamente. Josema.
Outras dicas
Eu acho que o que você está procurando é descrito na seção de conteúdo do usuário na parte inferior deste artigo MSDN
http://msdn.microsoft.com /en-us/library/system.io.file.setattributes.aspx
Você está tentando mudar somente leitura bandeira no arquivo quando você começa uma UnauthorisedAccessException. Você não pode fazer isso. Tudo o que você pode (e deve) fazer é notificar o usuário de que ele / ela não tem direitos de acesso para salvar o arquivo lá, e oferecer para salvar em outro lugar.