Meine Anwendung enthält eine ausführbare Datei mit Selbstaktualisierung, die zum Aktualisieren der Anwendung verwendet wird.Schreibzugriff auf den Ordner "Programme"
Einer der ersten Schritte der Updater ist ausführt zu prüfen, ob es
Schreibberechtigung für den Anwendungsordner hat 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;
Wenn unter Win7/Vista ausgeführt wird, diesen Code Pass (was bedeutet, dass nach CAS, der Code hat Schreibzugriff), aber wenn ich versuche, Dateien zu schreiben, bekam ich einen Zugriff verweigert (und ich habe bestätigt, dass die Dateien nicht verwendet werden)
Ich verstehe, dass Vista/Win7 UAC Benutzer davon abhält Schreiben von Dateien in den Ordnern der Programmdateien. Ich jedoch nicht verstehen, was ist, warum die Erlaubnis erteilt, wenn in Wirklichkeit ist es nicht
Grüße,
Eric Girard
PS: Wenn ich den gleichen Code mit ‚Ausführen als Administrator‘ ausführen funktioniert es gut
Ist die Anwendung versucht, sich zu lassen, zu überschreiben, während es läuft? –
Wie ich schrieb, nein ist es nicht, der Updater ist ein anderer .exe, dass keine Abhängigkeiten von lokalen dll –
Ich denke, wenn Sie kein Administrator sind, dann dürfen Sie keine ausführbare Datei in irgendwelchen Programmdateien schreiben Unterordner. Versucht Ihr Updater, ausführbare Dateien zu schreiben? –