La mia applicazione include un eseguibile di auto aggiornamento che viene utilizzato per aggiornare l'applicazione.Scrittura accesso alla cartella Programmi
Uno dei primi passi il programma di aggiornamento sta eseguendo è quello di verificare che essa non ha il permesso di scrittura per la cartella dell'applicazione
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;
Quando si esegue sotto Win7/Vista, questo passaggio di codice (il che significa che in base alle CAS, il codice ha accesso in scrittura), tuttavia quando provo a scrivere file, ho un accesso negato (e ho confermato che i file NON sono in uso)
Capisco che Vista/Win7 UAC impedisca agli utenti di scrivere file nelle cartelle dei file di programma. Tuttavia, quello che non capisco è il motivo per cui l'autorizzazione viene concessa se in realtà non lo è
saluti,
Eric Girard
PS: Se corro lo stesso codice utilizzando 'Esegui come amministratore' , funziona perfettamente
è l'applicazione tentata sovrascrittura di sé mentre è in esecuzione? –
Come ho scritto, no non lo è, il programma di aggiornamento è un altro .exe che non ha dipendenze da nessuna DLL locale –
Penso che se non sei un amministratore, quindi non sei autorizzato a scrivere alcun eseguibile in nessun file di programma sottocartella. Il tuo programma di aggiornamento sta cercando di scrivere file eseguibili? –