Gibt eine Anwendung mit erhöhter UAC an

8

Ich habe eine Anwendung, die die UAC-Erhöhung benötigt.

Ich habe den Code, mit dem ich das geben kann, aber die Anwendung öffnet sich zweimal .. Welches ist das Problem ..

Also hier ist der Code in Form1:

%Vor%

und das ist der Code programs.cs

%Vor%

beim Debuggen finde ich heraus, dass es zuerst

ausführt
  

Prozess p = Prozess.Start (startInfo);

öffnet den UAC-Anhebungsdialog der Anwendung und öffnet dann die Anwendung

aber dann geht es zum

  

Application.Run (neues Form1 ());

in main () und öffnet die Anwendung erneut.

Ich möchte nicht, dass die App erneut geöffnet wird ...

Ich bin neu hier ist etwas, was ich falsch mache und muss ich die UAC schließen, sobald es offen ist ..

Danke

    
user175084 20.06.2011, 14:35
quelle

4 Antworten

26

Sie müssen nicht alles einmischen, um sicherzustellen, dass Ihre Anwendung immer mit erhöhten Rechten ausgeführt wird. Sie können einfach ein Anwendungsmanifest hinzufügen , das Windows anweist, Ihre App erhöht auszuführen, und die UAC-Eingabeaufforderung erscheint, ohne dass Sie eine einzelne Codezeile schreiben müssen.

Es gibt eine verwandte Frage mit einer Antwort, in der auch beschrieben wird, wie ein Manifest hinzugefügt wird: Wie kann ich ein Anwendungsmanifest in eine Anwendung einbetten? mit VS2008?

    
Jon 20.06.2011, 14:45
quelle
3

Wenn Sie Ihre Berechtigungen erhöhen, wird immer ein neuer Prozess gestartet. Es gibt keinen anderen Weg, als zuerst mit erhöhten Rechten zu beginnen, indem Sie Ihre Anwendung so einstellen, dass Administratorrechte erforderlich sind. Sie können die Anwendung direkt nach dem Start des erhöhten Prozesses beenden, sodass nur eine Anwendung ausgeführt wird.

Dieses Szenario ist für Anwendungen geeignet, bei denen nur bestimmte Teile ihrer Funktion erhöht werden müssen - z. B. ein automatisch aktualisierendes Installationsprogramm, das Zugriff auf Programmdateien benötigt - und keines, das ständig Administratorzugriff erfordert.

>     
J. Steen 20.06.2011 14:43
quelle
3

Dies ist ein viel besserer Ansatz, wenn bekannt ist, dass Ihre Anwendung von Anfang an Administratorrechte benötigt.

    
Bueller 20.06.2011 14:44
quelle
1

Verschieben Sie den WindowsPrincipal-Code wie in dem folgenden Beispiel von Ihrem Formular an Program.cs. Dadurch wird der Benutzer vor dem Starten von Formularen zur UAC-Berechtigung aufgefordert, und das Formular wird nur gestartet, wenn die UAC-Berechtigung erteilt wurde.

%Vor%     
Martyn Talbot 06.01.2016 18:41
quelle

Tags und Links