我有一个C#/.NET程序,既可以作为控制台应用程序运行,也可以作为服务运行。 目前,我使用命令行选项将其启动为控制台应用程序,但我想避免这样做。
是否可能通过编程方式检测我的程序是否正在作为服务启动?
如果它是纯Win32,我可以尝试使用StartServiceCtrlDispatcher以服务的身份启动,并在返回ERROR_FAILED_SERVICE_CONTROLLER_CONNECT时回退到控制台,但是System.ServiceProcess.ServiceBase.Run()如果失败,则会弹出错误对话框,然后只需返回而不向程序发出错误信号。
有任何想法?
是否可能通过编程方式检测我的程序是否正在作为服务启动?
如果它是纯Win32,我可以尝试使用StartServiceCtrlDispatcher以服务的身份启动,并在返回ERROR_FAILED_SERVICE_CONTROLLER_CONNECT时回退到控制台,但是System.ServiceProcess.ServiceBase.Run()如果失败,则会弹出错误对话框,然后只需返回而不向程序发出错误信号。
有任何想法?