Bonjour,
Je voudrais pouvoir créer un port via le service WMI (en vb.net framework 2.0) mais je ne sais pas comment faire. Ce qui me gène surtout c’est de pouvoir ajouté un élément dans un service WMI.
Merci.
Bonjour,
Je voudrais pouvoir créer un port via le service WMI (en vb.net framework 2.0) mais je ne sais pas comment faire. Ce qui me gène surtout c’est de pouvoir ajouté un élément dans un service WMI.
Merci.
Personne ne me répond.
Voici ce que j’ai codé pour pouvoir ajouter un port. Toutefois, cette solution ne me convient pas car il faut que je copie un objet existant pour pouvoir en rajouter un nouveau. Ce qui ne pas génial car comment je fais quand il n’a pas de port présent ?
Si vous avez une meilleure solution j’aimerais bien la connaître.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31 Dim connexion As System.Management.ConnectionOptions = New ConnectionOptions() Dim nomMachine As String = "." Dim managementScope As System.Management.ManagementScope Dim objQuery As System.Management.ObjectQuery Dim query As ManagementObjectSearcher Dim queryCollection As ManagementObjectCollection = Nothing Dim objNewPort As ManagementObject Try 'connexion managementScope = New System.Management.ManagementScope("\\" + nomMachine + "\root\cimv2", connexion) objQuery = New System.Management.ObjectQuery("Select * from Win32_TCPIPPrinterPort") query = New ManagementObjectSearcher(managementScope, objQuery) 'Récupération des objets existant queryCollection = query.Get() 'Récupération d'un objet objNewPort = query.Get()(0) 'Création de l'objet à ajouter objNewPort("Name") = "IP_" & "10.10.10.10" objNewPort("Protocol") = 2 objNewPort("HostAddress") = "10.10.10.10" objNewPort("PortNumber") = "XXX" objNewPort("SNMPEnabled") = True objNewPort("Queue") = "XXXXX" objNewPort("SNMPCommunity") = "xxxxxxx" objNewPort("SNMPDevIndex") = 1 'ajout de l'objet dans le service objNewPort.Put()
ça fais deux jours que je suis dessus et je n'arrive toujours pas à trouver une solution convenable. J'ai réussi à récupérer les propriétés de la classe (Win32_TCPIPPrinterPort) sans copier un objet existant (via les 3 premières lignes du code). Mais je ne sais pas comment je peux affecter cet objet dans le wmi32_TCPIPPrinterPort. Avez-vous une idée?
Merci.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 Dim p As New ManagementPath("Win32_TCPIPPrinterPort") Dim opt As New ObjectGetOptions(Nothing, TimeSpan.MaxValue, True) Dim c As New ManagementClass(p, opt) c("Name") = "IP_" & "X.X.X.X" c("Protocol") = 2 c("HostAddress") = "X.X.X.X" c("PortNumber") = "X" c("SNMPEnabled") = True c("Queue") = "XXXXXXXX" c("SNMPCommunity") = "public" c("SNMPDevIndex") = 1
Vu que personne ne me répond je me réponds à moi même.
J'ai enfin fini par trouver comment il fallait faire pour ajouter un objet dans une classe appartenant au service WMI.
Si on insère l’objet (méthode put) sans lui affecter une option l’erreur suivante se produit :
Donc il est important d’insérer l’objet de cet façon newInstance.Put(poptions) avec ‘poptions’ ayant un type ‘UpdateOrCreate’ et un ‘UseAmendedQualifiers’ à vrai.Un objet corrigé ne peut pas être placé sauf si WBEM_FLAG_USE_AMENDED_QUALIFIERS a été spécifié.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35 'VARIABLES Dim mangementClasse As New ManagementClass("Win32_TCPIPPrinterPort") 'Représente une classe WMI Dim newInstance As ManagementObject = Nothing 'Représente un nouvel objet de de la classe 'Win32_TCPIPPrinterPort' Dim poptions As PutOptions = New PutOptions() Try 'Création d'une nouvelle instance appartenat à la classe 'Win32_TCPIPPrinterPort' newInstance = mangementClasse.CreateInstance() 'Affectation des valeurs pour les propriétés voulus newInstance("Name") = "IP_" & "X.X.X.X" newInstance("Protocol") = 2 newInstance("HostAddress") = "X.X.X.X" newInstance("PortNumber") = "X" newInstance("SNMPEnabled") = True newInstance("Queue") = "XXXXXXXXX" newInstance("SNMPCommunity") = "public" newInstance("SNMPDevIndex") = 1 'Affecation du type doption choisie. Ici en mode Mise à jour ou création. 'Afin de pouvoir ajouter un nouvel objet dans la classe 'Win32_TCPIPPrinterPort' poptions.Type = PutType.UpdateOrCreate poptions.UseAmendedQualifiers = True 'Ajout de l'objet dans le service WMI newInstance.Put(poptions) Catch ex As Exception MessageBox.Show("Erreur dans l'appel WMI : " & ex.Message) Finally newInstance.Dispose() mangementClasse.Dispose() End Try
Partager