mon application inclut un exécutable de mise à jour automatique qui est utilisé pour mettre à jour l'application.Dossier d'accès en écriture au dossier des programmes
L'une des premières étapes de la mise à jour EFFECTUE est de vérifier qu'il ne l'autorisation d'écriture dans le dossier de l'application
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;
Lors de l'exécution sous Win7/Vista, ce passage de code (ce qui signifie que, selon CAS, le code a un accès en écriture), mais quand j'essaye d'écrire des fichiers, j'ai reçu un accès refusé (et j'ai confirmé que les fichiers ne sont pas utilisés)
Je comprends que Vista/Win7 UAC empêche les utilisateurs de écrire des fichiers dans les dossiers de fichiers du programme. Cependant, ce que je ne comprends pas pourquoi l'autorisation est accordée si, en réalité, ce n'est pas
Cordialement,
Eric Girard
PS: Si je lance le même code en utilisant « Exécuter en tant qu'administrateur » , ça marche bien
est l'application qui essaie de se remplacer pendant qu'il est en cours d'exécution? –
Comme je l'ai écrit, non, le programme de mise à jour est un autre .exe que pas de dépendances sur une DLL locale –
Je pense que si vous n'êtes pas un administrateur, vous n'êtes pas autorisé à écrire un fichier exécutable dans les fichiers programme sous-dossier. Votre programme de mise à jour essaie-t-il d'écrire des exécutables? –