2010-04-01 6 views
0

J'essaie d'utiliser la méthode Create de la classe Win32_Service, mais quand je l'appelle la InvokeMethod, je reçois cette exception:WMI: méthode de création de la Win32_Service classe

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>[email protected]() 

Voici le code (en F #, mais il est understable pour les programmeurs C# aussi :)):

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) 

l'exception est levée lorsque la dernière ligne est exécutée (j'ai supprimé les lignes suivantes).

Je pense que j'appelle correctement la méthode, donc je ne sais pas pourquoi l'exception est levée. Quelqu'un peut-il m'aider?

Merci à l'avance, Marco

Répondre

0

je résolus :) J'ai juste besoin de créer l'objet imageService comme ceci:

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

Merci quand même :) Marco

Questions connexes