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