Я создаю windowservice, который запускает процесс, в котором я передаю несколько аргументов cmd в StartInfo.Arguments . Это работает нормально, как и ожидалось.

Проблема в том, что когда я останавливаю службу Windows, мне нужно сказать, чтобы работающая программа корректно завершила работу до остановки службы Windows. Потому что, если я просто убью процесс, программа не сохранит собранные данные. Программа, которую я запускаю, является Process Monitor, и она принимает следующую команду "/terminate" .

Как я могу передать аргумент /terminate до остановки моей службы Windows?

1 ответ1

0

Мне удалось найти решение. В OnStop() в сервисе мне нужно было создать новый экземпляр Process Monitor и передать аргумент /Terminate :

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

При этом он изящно останавливает все экземпляры Process Monitor .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .