Что нового

AutoIT+ActiveX+WMI (изменение типа запуска сервисов)

erlik

Продвинутый
Сообщения
317
Репутация
84
Не совсем по AutoIT, но в какой теме спросить - не знаю.
----------------------------------------------------------------------------
Какой параметр нужно передавать методу ChangeStartMode? (это из WMI - если кто не в курсе).
В справке по WMI (файл винды cimwin32.mfl) указан тип string и варианты "Загрузка", "Система", "Автомат", "Вручную", "Отключено". Однако с такими вариантами получаю типичную ошибку при обращении к методам WMI - The requested action with this object has failed. При английском варианте этих строк - та же ошибка.
С остановкой\запуском\паузой сервисов (через тот же WMI ) проблем нет - но там и методы параметров не требовали.
А здесь как то не выходит.
Вот код:
Код:
Global $oShell   = ObjGet("winmgmts:{impersonationLevel=impersonate}")
...здесь получаем имя службы и определяем какой тип запуска ей установить  и все это передаем в нижеследующий код
$res = $oShell.ExecMethod("Win32_BaseService.Name='"&$name&"'", "ChangeStartMode", $mode)
_Log("Результат: "& $aServiceResult[$res.ReturnValue])
 

VladUs

Скриптер
Сообщения
621
Репутация
181
Из Вашего кода не видно какое значение имеет переменная $mode
Должны быть значения: "Manual", "Automatic", "Disabled"
Пример:
Код:
$strComputer = "." 
$strChangeMode = "Disabled" ; режимы запуска: "Manual", "Automatic", "Disabled"

$objWMIService = ObjGet("winmgmts:\\" & $strComputer & "\root\CIMV2") 
$objShare = $objWMIService.Get("Win32_Service.Name='Ati HotKey Poller'")
$objInParam = $objShare.Methods_("ChangeStartMode").inParameters.SpawnInstance_()
$objInParam.Properties_.Item("StartMode") =  $strChangeMode
$objOutParams = $objWMIService.ExecMethod("Win32_Service.Name='Ati HotKey Poller'", "ChangeStartMode", $objInParam)

ConsoleWrite( "ReturnValue: " & $objOutParams.ReturnValue & @CR)
 
Автор
E

erlik

Продвинутый
Сообщения
317
Репутация
84
VladUs
Огромное спасибо :ok: Наконец то все заработало.

Нда, недосмотрел я справку по ActiveX - параметры то оказывается передавать в виде коллекции нужно. Но благодаря приведенному примеру "все мне ясно стало теперь" :smile:
 
Верх