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;
}
Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top