配置现有服务以在系统启动时运行

Sam*_*ica 2 c# windows-services

我正在寻找以下命令的C#版本:

sc config "someServiceName" start=auto
Run Code Online (Sandbox Code Playgroud)

我发现了很多关于配置服务的信息,以便在安装时自动启动,但我无法找到如何对现有服务执行相同操作.

现在,我已经把它炮轰了,但如果有办法使用.NET API,我宁愿这样做.

vcs*_*nes 6

这应该做的伎俩:

var serviceName = "<your service name here>";
string objPath = string.Format("Win32_Service.Name='{0}'", serviceName);
using (var service = new ManagementObject(new ManagementPath(objPath)))
{
    var result = (int)service.InvokeMethod("ChangeStartMode", new object[] {"Automatic"});
}
Run Code Online (Sandbox Code Playgroud)

您需要添加对System.Management程序集的引用,以及导入名称空间System.Management.

请注意,您的程序必须升级(以管理员身份运行)才能使其正常工作,并且无法解决此问题.有关其他可能的值ChangeStartMode,可以参考MSDN.

result变量将是一个数字值,表示结果.例如,0表示成功.有关所有可能的返回值,请参阅以前链接的MSDN文章.