Cambiar un atributo de solo lectura en un archivo
Pregunta
Parece que no puedo cambiar la marca de solo lectura en un archivo. He intentado esto en Vista y XP con el mismo resultado, así que no creo que sea un problema relacionado con UAC.
Sin embargo, nada de lo que he hecho parece funcionar. Vea la muestra a continuación. ¿Alguien puede decirme qué estoy haciendo mal?
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;
}
Solución
No es posible cambiar el atributo de solo lectura de un archivo en UnauthorizedAccessException porque la aplicación se está ejecutando con los permisos que tiene en la computadora.
Si no tiene permisos para cambiar normalmente este archivo de solo lectura, su aplicación tampoco cambiará este atributo.
Saludos cordiales. Josema.
Otros consejos
Creo que lo que está buscando se describe en la sección de contenido del usuario al final de este artículo de msdn
http://msdn.microsoft.com /en-us/library/system.io.file.setattributes.aspx
Está intentando cambiar el indicador de solo lectura en el archivo CUANDO obtiene una excepción de acceso no autorizado. No puedes hacer eso. Todo lo que puede (y debe) hacer es notificar al usuario que no tiene derechos de acceso para guardar el archivo allí y ofrecer guardarlo en otro lugar.