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

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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top