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

时间:2012-01-23 22:05:11

标签: c# windows-services

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

sc config "someServiceName" start=auto

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

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

2 个答案:

答案 0 :(得分: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"});
}

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

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

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

答案 1 :(得分:-1)

          user  tag1  tag2  tag3
0  Roshan ghai     0  .287     0
1    mank nion  .143  .287     0
2   pop rajuel  .287     0     0
3   random guy  .287  .287     0

您需要添加对var serviceName = "<your service name here>"; string objPath = string.Format("Win32_Service.Name='{0}'", serviceName); using (var service = new ManagementObject(new ManagementPath(objPath))) { service.InvokeMethod("ChangeStartMode", new object[] {"Automatic"}); } 程序集的引用,以及导入名称空间System.Management