Настройте существующую службу для запуска при запуске системы - PullRequest
2 голосов
/ 24 января 2012

Я ищу версию C # следующей команды:

sc config "someServiceName" start=auto

Я нашел много информации о настройке службы для автоматического запуска при установке, но у меня возникают проблемы с поиском того же способа для существующей службы.

Прямо сейчас, я прибегаю к обстрелу, но если есть способ использовать .NET API, я бы предпочел сделать это.

Ответы [ 2 ]

6 голосов
/ 24 января 2012

Это должно сработать:

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 вы можете обратиться к MSDN .

Переменная result будет числовым значением, указывающим результат.Например, 0 для успеха.Обратитесь к ранее связанной статье MSDN для всех возможных возвращаемых значений.

0 голосов
/ 06 июня 2016
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, а также импортировать пространство имен System.Management.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...