WMI: создать метод класса Win32_Service - PullRequest
0 голосов
/ 02 апреля 2010

Я пытаюсь использовать метод Create класса Win32_Service, но когда я вызываю InvokeMethod, я получаю это исключение:

System.Management.ManagementException: Invalid method 
at System.Management.ManagementException.ThrowWithExtendedInfo(ManagementStatus errorCode)
at System.Management.ManagementObject.InvokeMethod(String methodName, ManagementBaseObject inParameters, InvokeMethodOptions options)
at <StartupCode$FSI_0075>.$FSI_0075.main@()

Это код (в F #, но он также нестабилен для программистов на C #:)):

let scope = new ManagementScope(@"root\cimv2", null)
use imageService = Utility.getServiceObject scope "Win32_Service"
use inParams = imageService.GetMethodParameters("Create")
inParams.["Name"] <- name
inParams.["DisplayName"] <- displayName
inParams.["PathName"] <- pathName
inParams.["ServiceType"] <- 0x10   // Own Process
inParams.["ErrorControl"] <- 0     // User is not notified
inParams.["StartMode"] <- "Automatic"
inParams.["DesktopInteract"] <- false
inParams.["StartName"] <- "LocalSystem"
inParams.["StartPassword"] <- ""
inParams.["ServiceDependencies"] <- null

use outParams = imageService.InvokeMethod("Create", inParams, null) 

Исключение выдается при выполнении последней строки (я удалил следующие строки).

Мне кажется, я правильно вызываю метод, поэтому не знаю, почему выбрасывается исключение. Кто-нибудь может мне помочь?

Спасибо заранее, Marco

1 Ответ

0 голосов
/ 02 апреля 2010

Я решил :) Мне просто нужно создать объект imageService как это:

    let imageService = new ManagementClass(scope, new ManagementPath("Win32_Service"), null)

Спасибо в любом случае :) Marco

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