Запуск консольного приложения без взаимодействия с сервисом windows - PullRequest
0 голосов
/ 24 марта 2020

Я пишу windows сервис, который должен действовать как своего рода «сторожевой таймер» для другого стороннего приложения. Это приложение в настоящее время напрямую зарегистрировано как служба (с использованием sc create), но это усложняет обновление, поскольку мне нужно, чтобы администратор остановил службу, заменил двоичный файл, а затем снова запустил его. Поэтому я намеревался создать службу-оболочку, которая периодически проверяет наличие обновлений и при необходимости выполняет их (загрузка нового файла, остановка приложения и запуск нового двоичного файла). Я решил попытаться использовать. NET шаблон Core Worker Service для этого (используя расширение Hosting для регистрации их в качестве правильной windows службы), но я не могу понять, как на самом деле запустить стороннюю application.

Я планировал просто использовать Process.Start(<path-to-3rd-party-app>), но это не дало мне никаких результатов. После некоторых копаний я нашел несколько старых сообщений о том, что вы не можете напрямую запустить процесс из службы windows из-за отсутствия контекстов выполнения или чего-то в этом духе (я не очень знаком с этим материалом, это моя первая попытка при написании услуги), однако посты, казалось, предполагали, что проблема по существу сводится к интерактивности (не могу открыть окно и т. д. c.).

Наконец, мой вопрос таков: есть ли способ запуска стороннего приложения в качестве фонового процесса из Windows службы в. NET Core? Абсолютно никакой интерактивности не требуется, мне просто нужно, чтобы процесс был запущен, и чтобы я мог его запустить / остановить / указать аргументы и т. Д. c. из моего кода.

Спасибо!

РЕДАКТИРОВАТЬ: я забыл добавить его при отправке, но метод, используемый в этот ответ не работает для меня

РЕДАКТИРОВАТЬ 2: Некоторые пояснения, стороннее приложение, которое я пытаюсь запустить, раскручивает веб-сервер / интерфейс. Когда я запускаю службу оболочки прямо из консоли (а также когда сам сервер запускается непосредственно как служба через sc.exe), я могу получить доступ к веб-интерфейсу без каких-либо проблем. Однако, когда я запускаю свою оболочку как сервис windows, веб-сервер никогда не запускается.

...