Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

[erledigt] Exe mit Klasse Process starten als Admin mit UseShellExecute=false + RedirectOutputs
sharpType
myCSharp.de - Member



Dabei seit:
Beiträge: 230

Themenstarter:

[erledigt] Exe mit Klasse Process starten als Admin mit UseShellExecute=false + RedirectOutputs

beantworten | zitieren | melden

Hi Profis,

ich habe folgendes Problem und kriege es einfach nicht hin:

Ich möchte ein Prozess mit Parametern als Admin starten (Windows 7) und parse den Output, den ich an die Konsole weiterleite. Daher ist:


System.Diagnostics.Process startServiceProcess = new System.Diagnostics.Process();

                            startServiceProcess.EnableRaisingEvents = true;
                            startServiceProcess.StartInfo.UseShellExecute = false;
                            startServiceProcess.StartInfo.CreateNoWindow = true;
                            startServiceProcess.StartInfo.RedirectStandardError = true;
                            startServiceProcess.StartInfo.RedirectStandardOutput = true;

Jetzt habe ich:


                            if (System.Environment.OSVersion.Version.Major ≥ 6)  // Windows Vista or higher
                            {
                                startServiceProcess.StartInfo.Verb = "runas";
                            }
                            else
                            {
                                // No need to prompt to run as admin
                            }

dahinter eingefügt. Anschließen den Process gestartet. Das Funktioniert nur, wenn


UseShellExecute = true

ist. Dann habe ich aber das Problem, dass ich den Output nicht parsen kann, was wichtig ist. Und wenn ich UseShellExecute = false setze und den Username, Domäne und PW in den Code direkt eingebe funktioniert es, jedoch habe ich dann das "WindowsBehaviour" nicht, d.h. Automatische Eingabe - falls erforderlich - von User + PW des Adminkontos.

Wie kann ich den Output parsen d.h. UseShellExecute = false und gleichzeitig die Windows-Adminabfrage (UAC) verwenden?

Das Ärgert mich wirklich. Ich möchte mir jetzt eigentlich keinen Dialog basteln und nach dem PW verlangen sondern das - wie eigentlich gedacht - Windows selbst überlassen.

Hoffe mir kann da jmd helfen, bin echt am verzeifeln.

Bin dankbar für jeden Hinweis...
private Nachricht | Beiträge des Benutzers
Grumbler85
myCSharp.de - Member



Dabei seit:
Beiträge: 550
Herkunft: Rheingau Taunus

beantworten | zitieren | melden

Ich glaube das geht nicht, und der Antwortende in diesem Thread glaubt das ebenfalls nicht: Stackoverflow - Get error and standard output from an elevated child process
Der Vorteil der Klugheit liegt darin, dass man sich dumm stellen kann - umgekehrt ist das schon schwieriger (K. Tucholsky)
Das Problem mit Internet-Zitaten ist, dass sie oftmals zu unrecht als authentisch angenommen werden. (K. Adenauer)
private Nachricht | Beiträge des Benutzers
sharpType
myCSharp.de - Member



Dabei seit:
Beiträge: 230

Themenstarter:

beantworten | zitieren | melden

Ok für alle die, die auf diesen Thread durch eine Suche gestoßen sind und sich ebenfalls über die Leute aufregen die dann nur schreiben: closed, weil gelöst 8o


Folgendes hat mir weitergeholfen:

Ich habe (in Visual Studio 2010 Pro) ein neues Element hinzugefügt ==> Anwendungsmanifestdatei und dort

<requestedExecutionLevel  level="asInvoker" uiAccess="false" />

durch

<requestedExecutionLevel  level="requireAdministrator" uiAccess="false" />

ersetzt. Die Vorlagen sind dort schon alle vorhanden, man muss sich praktisch nur "einkommentieren". Das löst das Problem in sofern, dass beim Start der kompletten Applikation die UAC auftaucht und nach dem Admin fragt und anschließend die gesamte App als Admin läuft. Dadurch kann ich auch wieder den Output umleiten ohne das die Fehlermeldung kommt, dass useshellexecute=true sein muss.

PS: Es funktioniert scheinbar nicht (zumindest bei mir nicht), die App ohne Adminmanifest - also ganz normal wie vorher - über Windows dann mit einem Rechtklick auf die EXE und "Als Administrator ausführen" zu starten.

Also alles bestens

Dankeschöööön.

Grüße
private Nachricht | Beiträge des Benutzers