Um cmd als Administrator zusammen mit dem Befehl auszuführen?

8

Hier ist mein Code:

%Vor%

Ich möchte behalten

%Vor%

Ist es möglich, den Befehl ohne process.standardinput auszuführen? Ich versuche den Befehl auszuführen, den ich im Argument übergeben habe, aber der Befehl wird nicht ausgeführt.

    
purvang 30.09.2011, 13:00
quelle

2 Antworten

5

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:

%Vor%

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:

%Vor%

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:

%Vor%

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%     
Chris Haas 30.09.2011 13:56
quelle
1

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%     
mtijn 30.09.2011 13:10
quelle