Ich habe ein Szenario, in dem ich eine EXE-Datei von meiner .NET-Anwendung starten muss, aber ich komme nicht an die UAC-Eingabeaufforderung, die angezeigt wird. Die Eingabeaufforderung wird bereits vor dem Start der anderen EXE ausgelöst - wahrscheinlich schon beim Aufruf von Process.Start
.
Ich benutze diesen Code zum Starten der App:
%Vor%Beide EXEs (meine App und die andere EXE) haben dies in ihrem Manifest definiert:
%Vor%Wie kann ich die andere EXE ausführen, ohne eine UAC-Eingabeaufforderung auszulösen, und habe sie dasselbe Zugriffstoken wie die aufrufende Anwendung (damit sie Änderungen an Dateien im App-Ordner usw. vornehmen kann)?
So verhindern Sie eine UAC-Eingabeaufforderung beim Starten einer zweiten EXE:
1) Verwenden Sie nicht Verb = "runas"
- das wird Ihnen jedes Mal UAC geben
2) Verwenden Sie keine Setup-ähnlichen Dateinamen für Ihre EXE. Hier ist die Regel von MSDN :
Bevor ein 32-Bit-Prozess erstellt wird, Die folgenden Attribute werden überprüft um festzustellen, ob es ein ist Installer:
Dateiname enthält Schlüsselwörter wie "install", "setup", "update", etc.
Keywords in der folgenden Versionierung Ressourcenfelder: Lieferant, Firmenname, Produktname, Datei
Beschreibung, ursprünglicher Dateiname, Interner Name und Name exportieren.
Schlüsselwörter im Side-by-Side-Manifest eingebettet in die ausführbare Datei.
Schlüsselwörter in einer bestimmten StringTable Einträge in der ausführbaren Datei verknüpft.
Schlüsselattribute in den verknüpften RC-Daten in der ausführbaren Datei.
Gezielte Sequenzen von Bytes innerhalb der ausführbar.
Tags und Links .net c# uac processstartinfo