Bonjour à tous,

J'ai fait plusieurs recherche sur plusieurs site internet et j'ai un problème récurrent entre VB.Net et WMI.

Ce que j'essaye d'obtenir, ce sont les informations réseau (Adresse IP, DNS, Passerelle...) de la machine locale. Tout fonctionne correctement grace à WMI sauf dans certains cas pour la passerelle. Si je suis connecté en RJ45, j'arrive à obtenir la passerelle mais si je suis en Wifi, j'obtiens une erreur de valeur null. Alors que si je passe par un script vbs, j'arrive à obtenir toutes les informations dans tous les cas !

Voici mon code VB.Net (Les variables commençant par '_' sont des variables privés de ma classe) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
Dim searcher As ManagementObjectSearcher
searcher = New ManagementObjectSearcher("root\CIMV2", "SELECT IPAddress,DHCPServer,DNSServerSearchOrder,Description,DefaultIPGateway FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled = True")
For Each queryObj As ManagementObject In searcher.Get()
    sAdresse = queryObj("IPAddress").GetValue(0).ToString()
    If sAdresse.StartsWith(StartsWith) Then
        _AdresseIP = sAdresse
        _ServeurDHCP = queryObj("DHCPServer")
        _CarteReseau = queryObj("Description").ToString
        _Passerelle = queryObj("DefaultIPGateway").GetValue(0).ToString
        _ServeurDNS = queryObj("DNSServerSearchOrder").GetValue(0).ToString()
        Exit For
    End If
Next
Voici mon code VBS :
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
On error resume next 
set IPConfigSet = GetObject("winmgmts:{impersonationLevel=impersonate}!//").ExecQuery("SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled=TRUE") 
If Err.Number<>0 Then 
	wscript.echo " - non accessible -" 
Else 
for each IPConfig in IPConfigSet 
 
	BailObtenu = IPConfig.DHCPLeaseObtained
	BailExpirant = IPConfig.DHCPLeaseExpires
 
	'---- Convertion des date et heure d'obtention et d'expiration des baux DHCP en un format lisible par l'utilisateur. ----
	BailObtenu = mid(BailObtenu, 7, 2) & "/" & mid(BailObtenu, 5, 2) & "/" & mid(BailObtenu, 1, 4) & " - " & mid(BailObtenu, 9, 2)& ":" & mid(BailObtenu, 11, 2)& ":" & mid(BailObtenu, 13, 2)
	BailExpirant = mid(BailExpirant, 7, 2) & "/" & mid(BailExpirant, 5, 2) & "/" & mid(BailExpirant, 1, 4) & " - " & mid(BailExpirant, 9, 2)& ":" & mid(BailExpirant, 11, 2)& ":" & mid(BailExpirant, 13, 2)
 
	MsgBox " Configuration réseau de l'ordinateur " & ComputerName & vbcrlf & vbcrlf & _ 
		" Nom Machine " & vbtab & " : " & IPConfig.DNSHostName & vbcrlf & vbcrlf & _ 
		" Carte " & vbtab & vbtab & " : " & IPConfig.Description & vbcrlf & _ 
		" adresse MAC " & vbtab & " : " & IPConfig.MACAddress & vbcrlf & _ 
		" DHCP Activé" & vbtab & " : " & IPConfig.DHCPEnabled & vbcrlf & _
		" adresse IP " & vbtab & " : " & IPConfig.IPAddress(0) & vbcrlf & _
		" Masque " & vbtab & vbtab & " : " & IPConfig.IPSubnet(0) & vbcrlf & _
		" passerelle " & vbtab & " : " & IPConfig.DefaultIPGateway(0) & vbcrlf & _ 	
		" Serveur DHCP " & vbtab & " : " & IPConfig.DHCPServer & vbcrlf & vbcrlf & _
		" Serveur DNS " & vbtab & " : " & IPConfig.DNSServerSearchOrder(0) & vbcrlf & _
		"             " & vbtab & vbtab & " : " & IPConfig.DNSServerSearchOrder(1) & vbcrlf & _
		" Serveur WINS " & vbtab & " : " & IPConfig.WINSPrimaryServer(0) & vbcrlf & _
		"             " & vbtab & vbtab & " : " & IPConfig.WINSSecondaryServer(0) & vbcrlf & vbcrlf & _
		" Bail obtenu " & vbtab & " : " & BailObtenu & vbcrlf & _
		" Bail expirant " & vbtab & " : " & BailExpirant _          		  
		,,"Configuration  " 
     Next 
End If
Alors, savez-vous pourquoi celà ne fonctionne pas avec mon code .Net ?
Merci à tous de l'aide que vous saurez m'apporter.