Служба Windows. Изменить StartName - PullRequest
0 голосов
/ 02 июля 2018

Мне нужно проверить и отредактировать службу Windows StartName.

Я нашел это решение с помощью WMI API:

using (var service = new ManagementObject($"Win32_Service.Name = '{my_name}'"))
{
    using (var inParams = service.GetMethodParameters("Change"))
    {
        inParams["StartName"] = value;
        ManagementBaseObject outParams = service.InvokeMethod("Change", inParams, null);
        outParams.Dispose();
    }
}

Когда я вызываю этот код с помощью нового приложения консольного проекта с Visual Studio, который был запущен от имени администратора, он работает нормально.

Но когда я вызываю его службой Windows, которая вошла в систему как локальная система, я получаю исключение:

System.Management.ManagementException: ошибка загрузки поставщика. в System.Management.ManagementException.ThrowWithExtendedInfo (ManagementStatus errorCode) в System.Management.ManagementObject.InvokeMethod (String methodName, ManagementBaseObject inParameters, InvokeMethodOptions варианты) ...

Что я пропустил в этом случае? Какие разрешения / состояние приложения или что мне нужно изменить, чтобы редактировать службу StartName службой Windows?

1 Ответ

0 голосов
/ 02 июля 2018

Я думаю, что лучшим подходом было бы изменить имя в реестре. Возможно, вам придется запустить Visual Studio от имени администратора. Ссылка: https://stackoverflow.com/a/3887455/637840

Метод Change() в WMI требует много дополнительных затрат, которые вам не нужны. Возможно, вы допустите ошибку в каком-либо параметре, и, возможно, ваш сервисный регистр будет поврежден Посмотрите на все, что вам нужно установить, чтобы просто изменить имя по WMI: https://docs.microsoft.com/es-es/windows/desktop/TermServ/win32-terminalservice-change

В любом случае, если вам нужно сделать это всеми средствами, используя WMI. Вы можете использовать ORMi . У вас есть учебник по репо, который покажет вам, как выполнить метод.

Также вы можете использовать это как ссылку: https://medium.com/@luque.nicolas/compare-ormi-and-traditional-net-wmi-implementation-f00db26d10a3

...