Ich versuche, einen Prozess auf einem Remotecomputer mithilfe der System.Diagnostics.Process-Klasse zu erstellen. Ich kann einen Prozess erstellen. Das Problem ist jedoch, dass das Erstellen eines Dienstes lange dauert und das Konsolenfenster angezeigt wird. Eine andere ärgerliche Sache ist, dass das Konsolenfenster über meinem Windows-Formular angezeigt wird und ich keine anderen Operationen in diesem Formular ausführen kann. Ich habe alle Eigenschaften wie eingestellt CreateNoWindow = true
,
proc.StartInfo.WindowStyle = ProcessWindowStyle.Hidden
Trotzdem wird das Konsolenfenster angezeigt. Sogar ich habe Ausgabe und Fehler umgeleitet, um den Stream zu trennen, aber kein Glück.
Gibt es eine andere Möglichkeit, das Konsolenfenster auszublenden? Bitte hilf mir .
Hier ist der Teil meines Codes, mit dem ich den Befehl sc ausgeführt habe.
Process proc = new Process();
proc.StartInfo.UseShellExecute = false;
proc.StartInfo.CreateNoWindow = true;
proc.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
proc.StartInfo.FileName = "sc";
proc.StartInfo.Arguments = string.Format(@"\\SYS25 create MySvc binPath= C:\mysvc.exe");
proc.StartInfo.RedirectStandardError = false;
proc.StartInfo.RedirectStandardOutput = false;
proc.StartInfo.UseShellExecute = false;
proc.StartInfo.CreateNoWindow = true;
proc.Start();
proc.WaitForExit();
quelle
proc.StartInfo.RedirectedStandardOutput = true
? Ich habe dies mit einer Windows-Anwendung zum Laufen gebracht.UseShellExecute
undCreateNoWindow
zweimal?Antworten:
Ich hatte ein ähnliches Problem beim Versuch, einen Prozess zu starten, ohne das Konsolenfenster anzuzeigen. Ich habe mit verschiedenen Kombinationen von Eigenschaftswerten getestet, bis ich eine gefunden habe, die das gewünschte Verhalten aufweist.
Auf dieser Seite wird detailliert beschrieben, warum die
UseShellExecute
Eigenschaft auf false gesetzt werden muss.http://msdn.microsoft.com/en-us/library/system.diagnostics.processstartinfo.createnowindow.aspx
Unter Bemerkungen auf Seite:
quelle
startInfo.UseShellExecute = false;
Ich hatte Pech mit dieser Antwort, da der Prozess (Wix light.exe) im Wesentlichen zum Mittagessen ausgeht und nicht rechtzeitig zum Abendessen nach Hause kommt. Folgendes hat für mich jedoch gut funktioniert:
quelle
CreateNoWindow = true
hat bei mir nicht funktioniert, das hat :)Dies sollte funktionieren, versuchen Sie es;
Fügen Sie eine Systemreferenz hinzu.
Verwenden Sie dann diesen Code, um Ihren Befehl in einem ausgeblendeten CMD-Fenster auszuführen.
quelle
Das Fenster wird nicht angezeigt:
quelle