Wie @mtijn sagte, du hast eine Menge vor, die du später auch überschreibst. Sie müssen auch sicherstellen, dass Sie die Dinge korrekt umgehen.
Nehmen wir an, dass Sie den folgenden Befehl aufheben möchten:
%Vor% Erstens, wenn Sie diesen Befehl einfach durch Process.Start()
ausgeführt haben, wird ein Fenster geöffnet und geschlossen, weil nichts das Fenster offen hält. Er verarbeitet den Befehl und beendet ihn. Um das Fenster offen zu halten, können wir den Befehl in ein separates Befehlsfenster umbrechen und den Schalter /K
verwenden, um ihn weiterhin auszuführen:
Um diesen Befehl erhöht auszuführen, können wir runas.exe
genauso verwenden, wie Sie es waren, außer dass wir den Dingen etwas mehr entkommen müssen. Laut der Hilfe-Dokumentation ( runas /?
) müssen alle Anführungszeichen in dem Befehl, den wir an runas
übergeben, mit einem Backslash versehen werden. Leider führt dies mit dem obigen Befehl zu einem doppelten Backslash, der den CMD-Parser so verwirrte, dass auch ein Escape-Befehl erforderlich ist. Der obige Befehl lautet also:
Schließlich können wir mithilfe der von Ihnen bereitgestellten Syntax alles in einen runas
-Befehl einbinden und unseren obigen Befehl in weitere Anführungszeichen einschließen:
Führen Sie den obigen Befehl von einer Eingabeaufforderung aus, um sicherzustellen, dass er wie erwartet funktioniert.
Gegeben, dass der endgültige Code einfacher zu assemblieren ist:
%Vor%Warum initialisierst du das Prozessobjekt mit Argumenten und überschreibst diese Argumente später? und btw: das letzte Bit, bei dem Sie Argumente setzen, verketten Sie 'command' bis zu 'cmd', das macht nicht viel Sinn und könnte dort sein, wo es fehlschlägt (es sieht so aus, als ob Ihnen ein Leerzeichen fehlt).
Außerdem verwenden Sie derzeit die Standardbefehlszeile, die Sie möglicherweise mit das Runas-Tool statt dessen. Sie können Runas auch über die Befehlszeile aufrufen.
Warum führen Sie auch "command" von der Kommandozeile aus? Warum starten Sie es nicht direkt von Process.Start mit Administratorrechten, die dann und dort bereitgestellt werden? Hier ist ein bisschen Pseudocode:
%Vor%Tags und Links .net c# command-line process privileges