コンソール アプリケーションとサービスの両方として実行できる C#/.NET プログラムがあります。現在、コンソール アプリケーションとして起動するコマンド ライン オプションを提供していますが、それは避けたいと考えています。
プログラムがサービスとして開始されているかどうかをプログラムで検出することはできますか?
純粋な Win32 の場合は、StartServiceCtrlDispatcher を使用してサービスとして開始し、ERROR_FAILED_SERVICE_CONTROLLER_CONNECT が返された場合はコンソールにフォールバックできますが、System.ServiceProcess.ServiceBase.Run() が失敗するとエラー ダイアログが表示され、エラーを通知せずに返されます。プログラムに。
何か案は?