2009-10-06 6 views
3

Fondamentalement, je suis nouveau à WMI et je ne peux pas comprendre ce que je suis absent ici ou comment déboguer ce ...InvalidOperationException lorsque vous appelez des méthodes sur l'objet WMI

ConnectionOptions connectOptions = new ConnectionOptions(); 
    connectOptions.Username = user; 
    connectOptions.Password = password; 
    machine = "remoteMachine.com"; 

    ManagementScope scope = new ManagementScope(
     @"\\" + machine + @"\root\cimv2", 
     connectOptions); 

    scope.Connect(); 

    ManagementPath path = new ManagementPath(@"\\" + machine + @"\root\cimv2\Win23_Process"); 

    ManagementClass proc = new ManagementClass(scope, path, new ObjectGetOptions()); 

    ManagementBaseObject args = proc.GetMethodParameters("Create"); 

Cette dernière ligne, où j'appelle une méthode sur proc, provoque cette InvalidOperationException ... ne me dit pas trop :(J'obtiens le même résultat lors de l'appel d'autres méthodes sur proc, comme GetInstances(). Lors du débogage à travers le code, il semble que je peux se connecter à la machine distante. avec succès

System.InvalidOperationException was unhandled 
    Message="Operation is not valid due to the current state of the object." 
    Source="System.Management" 
    StackTrace: 
     at System.Management.ManagementObject.GetMethodParameters(String methodName, ManagementBaseObject& inParameters, IWbemClassObjectFreeThreaded& inParametersClass, IWbemClassObjectFreeThreaded& outParametersClass) 
     at System.Management.ManagementObject.GetMethodParameters(String methodName) 

Répondre

2

Vous avez une erreur dans votre exemple de code, Je ne sais pas si c'est dans votre vrai code ou non. Vous avez Win23_Process, qui devrait être Win32_Process. Créer également pour Win32_Process a besoin d'arguments tels que la ligne de commande, le répertoire, etc.

+0

Eh bien c'est un échec majeur :(+1 pour la programmation par paire! – noctonura

+0

C'est la moitié de la réponse.L'autre problème est que je devais utiliser un chemin relatif pour ManagementPath puisque le chemin de base est déjà spécifié dans le ManagementScope – noctonura

+0

Je pensais que cela paraissait un peu suspect, mais je n'étais pas sûr que ce soit valide ou non. WMI, mais vous pouvez essayer Powershell, c'est un peu plus facile pour les doigts. –

Questions connexes