mi aplicación incluye un ejecutable de autoactualización que se utiliza para actualizar la aplicación.Acceso de escritura a la carpeta Archivos de programa
Uno de los primeros pasos del proceso de actualización está realizando es para comprobar que tiene permiso de escritura en la carpeta de aplicación
IPermission perm = new FileIOPermission(FileIOPermissionAccess.AllAccess, _localApplicationCodebase);
if (!SecurityManager.IsGranted(perm))
{
OnProgressChanged("Security Permission Not Granted \n The updater does not have read/write access to the application's files (" +
_localApplicationCodebase + ")",MessageTypes.Error);
return false;
}
OnProgressChanged("Updater have read/write access to local application files at " + _localApplicationCodebase);
return true;
Cuando se ejecutan con el Win7/Vista, este paso de código (es decir, que de acuerdo con la CAS, el código tiene acceso de escritura), sin embargo, cuando intento escribir archivos, recibí un acceso denegado (y confirmé que los archivos NO están en uso)
Entiendo que Vista/Win7 UAC impide a los usuarios escribiendo archivos en las carpetas de archivos de programa. Sin embargo, lo que no entiendo es por qué se le concede el permiso si en realidad no lo es
Saludos,
Eric Girard
PD: Si me quedo utilizando el mismo código 'Ejecutar como administrador' , funciona bien
es la aplicación que intenta sobrescribir sí mientras se está ejecutando? –
Como escribí, no, no lo es, el actualizador es otro .exe que no depende de ninguna DLL local –
Creo que si no eres un administrador, entonces no puedes escribir ningún archivo ejecutable en ningún archivo de programa subcarpeta. ¿Tu actualizador intenta escribir ejecutables? –