我有一个可以作为控制台应用程序和服务运行的 C#/.NET 程序。目前我给它一个命令行选项来作为控制台应用程序启动,但我想避免这种情况。
是否可以以编程方式检测我的程序是否作为服务启动?
如果它是纯 Win32,我可以尝试使用 StartServiceCtrlDispatcher 作为服务启动,如果它返回 ERROR_FAILED_SERVICE_CONTROLLER_CONNECT,则返回到控制台,但 System.ServiceProcess.ServiceBase.Run() 如果失败,则会弹出一个错误对话框,然后返回而不会发出错误信号到程序。
有任何想法吗?