Как определить, что процесс запущен диспетчером управления службами - PullRequest
5 голосов
/ 06 мая 2009

У меня есть несколько служб Windows, написанных на C #, которые я настроил для поддержки запуска из командной строки в виде консольного приложения, если передан определенный параметр. Работает отлично, но мне бы хотелось узнать, запускается ли приложение менеджером управления службами или из командной строки.

Можно ли во время выполнения узнать, было ли мое приложение запущено SCM?

Ответы [ 3 ]

2 голосов
/ 06 мая 2009

Environment.UserInteractive вернет false, если процесс выполняется в SCM.

1 голос
/ 06 мая 2009

SCM вызовет ваш метод OnStart, чтобы вы могли пометить это событие и убедиться, что при запуске из командной строки вы не вызываете OnStart. Или вы можете проверить параметры запуска, чтобы увидеть, как было запущено приложение.

0 голосов
/ 01 декабря 2011

В C функция StartServiceCtrlDispatcher() завершится ошибкой с ERROR_FAILED_SERVICE_CONTROLLER_CONNECT. Это лучший способ в C, интересно, если C # выставляет что-нибудь из этого?

ERROR_FAILED_SERVICE_CONTROLLER_CONNECT

Эта ошибка возвращается, если программа запускается как консольное приложение, а не как служба. Если программа будет запускаться как консольное приложение для целей отладки, структурируйте ее так, чтобы при возврате этой ошибки не вызывался специфичный для службы код.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...