Ausführen, cmd als administrator zusammen mit dem Befehl?
Hier ist mein code:
try
{
ProcessStartInfo procStartInfo = new ProcessStartInfo(
"cmd.exe",
"/c " + command);
procStartInfo.UseShellExecute = true;
procStartInfo.CreateNoWindow = true;
procStartInfo.Verb = "runas";
procStartInfo.Arguments = "/env /user:" + "Administrator" + " cmd" + command;
///command contains the command to be executed in cmd
System.Diagnostics.Process proc = new System.Diagnostics.Process();
proc.StartInfo = procStartInfo;
proc.Start();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
Den ich behalten will
procStartInfo.UseShellExecute = true
procStartInfo.RedirectStandardInput = false;
Ist es möglich, den Befehl auszuführen, ohne mit process.standardinput
?
Ich versuche ausführen-Befehl habe ich bestanden in der Argumentation, aber der Befehl nicht ausgeführt wird.
- Ist es möglich, den Befehl auszuführen, ohne mit Bearbeiten.standardinput? Ich versuche ausführen-Befehl habe ich bestanden in der Argumentation, aber der Befehl nicht ausgeführt wird. Sie sind momentan nicht mit, so dass diese Frage macht nicht viel Sinn. Bitte machen Sie Ihre user-Gunst und ermöglichen die Eingabeaufforderung angezeigt, damit Sie wissen, was Los ist.
- Sie wollen nicht
Verb
. Das bedeutet nicht, was Sie denken, es bedeutet. Ich denke. - procStartInfo.Arguments = "/env /user:" + "Administrator" + "cmd" + Befehl;
- ja, es scheitert an diesem Punkt. deshalb möchte ich wissen, ist es möglich, den Befehl auf eine andere Weise
- Dies könnte helfen: Start-Prozess mit administrator-rechten in C#
Du musst angemeldet sein, um einen Kommentar abzugeben.
Als @mtijn gesagt, du hast eine Menge Los, dass Sie auch das überschreiben später. Sie müssen auch sicherstellen, dass Sie die Flucht, die Dinge richtig.
Lassen Sie uns sagen, dass Sie möchten, führen Sie den folgenden Befehl erhöhten:
Zuerst, wenn Sie gerade lief dieser Befehl durch
Process.Start()
ein Fenster würde pop-öffnen und schließen sofort, weil es nichts zu halten, die Fenster öffnen. Es verarbeitet den Befehl und beendet sich. Halten Sie das Fenster geöffnet, wir können wickeln Sie den Befehl in separaten Befehl-Fenster und verwenden Sie die/K
wechseln, um es läuft zu halten:Zum ausführen dieses Befehls erhöhten wir können
runas.exe
so wie Sie waren, außer, dass wir flüchten müssen, die Dinge ein wenig mehr. Pro Hilfe docs (runas /?
) sämtliche Angebote in dem Befehl, dass wir gehen zurunas
müssen mit Backslashes. Leider tun das mit dem oben genannten Befehl gibt uns einen doppelten umgekehrten Schrägstrich verwirrt, dass die cmd-parser so, dass muss escaped werden, auch. Also den oben genannten Befehl am Ende wird:Schließlich, mithilfe der syntax, die Sie zur Verfügung gestellt, können wir wickeln alles in eine
runas
- Befehl und fügen Sie unsere oben genannten Befehl in einem weiteren Satz zitiert:Ausführen der obige Befehl von einer Eingabeaufforderung aus, um sicherzustellen, dass seine Arbeit als erwartet.
Alles gegeben, dass der endgültige code wird leichter zu montieren:
runas /env /user:Administrator "cmd /K \"dir c:\\\""
odercmd runas /env /user:Administrator "cmd /K \"dir c:\\\""
? Das erste ist, was Sie haben sollten, führen.RUNAS ERROR: Unable to run - cmd /K "dir c:\"
sollten Sie auch immer einen primären Fehler wie1326: Logon failure: unknown user name or bad password.
sind Sie?Administrator
zuYOURDOMAIN\Administrator
. Wenn Sie immer Fehler code 1327 dann gibt es eine Gruppe, Politik irgendeiner Art blockiert.warum sind Sie der Initialisierung die Prozess-Objekt mit Argumenten und dann später überschreiben Sie diese Argumente? und btw: das Letzte bit, wo Sie Ihre Argumente, die Sie verketten "- Befehl "rechts bis Sie" cmd " ein, das macht nicht viel Sinn und es kann sein wo es scheitert (sieht aus wie du bist fehlt ein Leerzeichen).
Zudem sind Sie derzeit mit den standard-command-line, vielleicht möchten Sie sich in das runas tool statt. Sie können auch rufen Sie die "runas" auf der Kommandozeile.
Auch, warum rennst du 'Befehl' von der Befehlszeile aus? warum nicht starten Sie es direkt aus dem Prozess.Starten mit admin-rechten versorgt dann und dort? hier ist ein bisschen pseudocode: