Frage

Das Thema sagt nicht viel weil es nicht einfach ist, in einer Zeile in Frage zu stellen. Ich habe ein paar Programme auszuführen, die ich aus der Registrierung gelesen. Ich habe von einem Feld zu lesen, wo jemand rettet die ganzen Pfade und Argumente.
Ich habe mit System.Diagnostics.ProcessStartInfo den Namen des Programms einstellen und seine Argumente, aber ich habe eine große Vielfalt von Argumenten gefunden, die ich analysieren müssen, um den Prozess ausführbare Datei in ein Feld und seine Argumente in der anderen zu retten.

Gibt es eine Möglichkeit, nur die gesamte Zeichenfolge ausführen wie?

War es hilfreich?

Lösung

Ich habe dies auf die gleiche Weise wie das Plakat oben in Angriff genommen, mit Prozess mit cmd.exe infos starten.

Process myProcess = New Process;
myProcess.StartInfo.FileName = "cmd.exe";
myProcess.StartInfo.Arguments = "/C " + cmd;
myProcess.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
myProcess.StartInfo.CreateNoWindow = True;
myProcess.Start();
myProcess.WaitForExit();
myProcess.Close();

cmd / c führt den Befehl aus und beendet dann. WaitForExit wird den Prozess beenden, wenn es zu lange läuft.

Andere Tipps

Es gibt mehr, in der Tat.

  1. Sie können cmd.exe rufen mit / C [Befehlszeile] als Argumente. Dies bewirkt, dass cmd.exe Ihren Befehl verarbeiten, und beenden.
  2. Sie können den Befehl zu einer Batch-Datei schreiben und starten Sie das.

Und natürlich gibt es die Annäherung Sie jetzt nimmst, nämlich die Befehlszeile Parsen.

Wenn ' UseShellExecute ' ist nicht gesetzt ist, ruft System.Diagnostics.Process entweder Create oder CreateProcessAsUser tatsächlich ein Programm starten (es verwendet die zweite ein, wenn Sie einen Benutzer / Domain / Passwort angeben). Und diese beiden Anrufe können den Befehl übernehmen und als ein einziges Argument erheben. Von MSDN:

  

Der lpApplicationName Parameter kann sein   NULL. In diesem Fall wird der Modulname   muss die erste weiß sein   Leerzeichen getrennte Token in der   lpCommandLine String. ...

lpApplication Namen zuordnet ProcessStartInfo.Filename und lpCommandLine Karten Argumente. So sollten Sie albe sein, nur gehen:

var processStartInfo = new ProcessStartInfo()
{
    UseShellExecute = false,
    Arguments = cmd
};
Process.Start(processStartInfo);
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top