Ausführen eines Prozesses von einer .NET-Anwendung ohne UAC-Eingabeaufforderung

8

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)?

    
synhershko 28.05.2011, 22:41
quelle

1 Antwort

7

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.

    
hsmiths 29.05.2011, 01:23
quelle

Tags und Links