У меня есть программа С#/. NET, которая может запускаться как консольное приложение, так и как служба. В настоящее время я предоставляю ему параметр командной строки для запуска в качестве консольного приложения, но я бы хотел этого избежать.
Можно ли программно определить, запускается ли моя программа в качестве службы?
Если бы это была чистая Win32, я мог бы попробовать начать с сервиса StartServiceCtrlDispatcher и вернуться к консоли, если он вернет ERROR_FAILED_SERVICE_CONTROLLER_CONNECT, но System.ServiceProcess.ServiceBase.Run() выдает ошибочный аргумент, если он терпит неудачу, а затем просто возвращается без сигнализируя об ошибке программе.
Любые идеи?