C# 如何确定Windows服务是手动启动还是由操作系统启动?

C# 如何确定Windows服务是手动启动还是由操作系统启动?,c#,service,windows-services,C#,Service,Windows Services,我有一个手动启动的Windows服务 服务中还有一个重新启动时间,使其能够自行重新启动。为此,我通过给操作系统一个>0编号退出,并在服务->恢复选项卡中,设置服务在第一次、第二次和后续故障时重新启动 Environment.Exit(1) 但如何确定该服务是手动启动还是由操作系统启动?您可以从注册表获取该服务: HKLM\System\CurrentControlSet\Services\YourServiceName 注册表项:Start(注册表项) 价值观: 1->系统 2->自动 3-

我有一个手动启动的Windows服务

服务中还有一个重新启动时间,使其能够自行重新启动。为此,我通过给操作系统一个
>0
编号退出,并在服务->恢复选项卡中,设置服务在第一次、第二次和后续故障时重新启动

Environment.Exit(1)

但如何确定该服务是手动启动还是由操作系统启动?

您可以从
注册表获取该服务:

HKLM\System\CurrentControlSet\Services\YourServiceName
注册表项:
Start
(注册表项)

价值观: 1->系统 2->自动 3->手动 4->禁用

你也可以

new ServiceController("YourServiceName") 

然后做一些p/Invokefun:

这个注册表值会改变吗?我认为它反映了服务是如何设置的,这是一个奇怪的问题。如果服务总是手动启动,那么您当然知道它不是自动启动的。恢复密钥完全无效。