Übergeben Sie das Cmd-Argument an den laufenden Prozess, wenn Sie den Windows-Dienst beenden

454
Örvar

Ich erstelle einen Windows-Dienst, der einen Prozess startet, bei dem ich mehrere Cmd-Argumente in der übergebe StartInfo.Arguments. Das funktioniert wie erwartet.

Das Problem ist, dass ich, wenn ich den windowsservice stoppe, dem laufenden Programm sagen muss, dass es ordnungsgemäß heruntergefahren werden muss, bevor der Windows-Dienst stoppt. Denn wenn ich nur den Prozess abschalte, speichert das Programm die gesammelten Daten nicht. Das Programm, das ich ausführte, ist der Prozessmonitor, und es akzeptiert den folgenden Befehl "/terminate".

Wie kann ich das /terminateArgument übergeben, bevor mein Windows-Dienst beendet wird?

0
Können Sie nicht eine Batchdatei verwenden, die das laufende Programm zuerst mit "start / wait" schließt und dann den Dienst mit dem Befehl [`sc stop"] (https://ss64.com/nt/sc.html) stoppt? AFH vor 6 Jahren 2
@AFH Danke für den Kommentar. Nun, ich möchte den gesamten Code innerhalb des Dienstes selbst behalten. Wie auch immer, ich bin einfach punkig geworden, weil ich diese Frage auf ein paar anderen Stack-Sites gestellt habe. Ich denke, meine Frage ist nicht 100% ig passend für dieses Forum, aber ich habe eine Lösung gefunden. Ich musste eine neue Instanz des Prozessmonitors erstellen und das Argument `/ Terminate` übergeben. Damit werden alle Instanzen des Prozessmonitors ordnungsgemäß angehalten. Örvar vor 6 Jahren 0
@ Örvar Sie können [Ihre eigene Frage beantworten] (https://superuser.com/help/self-answer) DavidPostill vor 6 Jahren 1

1 Antwort auf die Frage

0
Örvar

Ich habe eine Lösung gefunden. In der OnStop()Methode im Service musste ich eine neue Instanz des Prozessmonitors erstellen und das /TerminateArgument übergeben:

Process process = new Process(); process.FileName = "\Procmon.exe" ; process.StartInfo.Arguments = "/AcceptEula /Terminate"; process.Start(); 

Damit werden alle Process Monitor- Instanzen ordnungsgemäß gestoppt .

Welche Sprache ist dieser Code geschrieben? Pimp Juice IT vor 6 Jahren 0
@PimpJuiceIT C # Ich habe es als Tag hinzugefügt. Örvar vor 6 Jahren 0