Le fait d'activer le service DHCP ne signifie pas que la machine est configurée en DHCP, simplement qu'elle a la possibilité de le faire ... encore faut-il activer le DHCP sur les interfaces existantes, c'est ce qu'est censée faire la boucle while via la procédure SetNIC.
Pour comprendre ce script lis la clé suivante du registre sous NT4 :
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkCards\
Normalement il doit y avoir des nombres qui sont les indices des interfaces, en quelque sorte leur identifiant. Voici la partie du script avec les commentaires (les commentaires commencent avec un ') :
Quote:
' Obtention de la carte réseau
' On quitte la boucle si on n'arrive pas à lire une clé
On Error Resume Next
' La première interface est numérotée 1
iCount = 1
' Début de boucle
Do
' On obtient le véritable identifiant de la carte réseau (pour SetNIC)
sNIC = oWSHShell.RegRead("HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkCards\" & iCount & "\ServiceName")
' On obtient le nom du fabricant (pour éviter les interfaces factices Microsoft)
sMan = oWSHShell.RegRead("HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkCards\" & iCount & "\Manufacturer")
' On ne modifie l'interface que si elle est "réelle"
If sMan <> "Microsoft" And Err.Number = 0 Then
Call SetNIC
End If
' On passe à la carte suivante
iCount = iCount + 1
' Si on a eu une erreur, on quitte la boucle
Loop Until Err.Number <> 0
' On efface l'erreur
Err.Clear
' Fin du script
|
Quote:
' Procédure d'activation DHCP sur une interface
Sub SetNIC
Dim iTest
' On active le DHCP en créant la clé "EnableDHCP" et en mettant les autres paramètres par défaut
sNIC = "HKLM\SYSTEM\CurrentControlSet\Services\" & sNIC &"\Parameters\TCPIP\"
iTest = oWSHShell.RegRead(sNIC & "EnableDHCP")
' Si le DHCP n'est pas activé, on l'active et ...
If iTest = 0 Then
oWSHShell.RegWrite sNIC & "EnableDHCP", 1, "REG_DWORD"
oWSHShell.RegWrite sNIC & "IPAddress", "0.0.0.0", "REG_MULTI_SZ"
oWSHShell.RegWrite sNIC & "SubnetMask", "0.0.0.0", "REG_MULTI_SZ"
End If
End Sub
|
Juste un problème : chez moi aucune carte n'a de clé "Manufacturer" (je suis sous XP) mais ça ne devrait pas poser de problème. Par contre, j'ai des cartes de numéro 2 et 12, le script ne les prendra pas en compte ... je serais plutôt pour un for avec un nombre d'itération grand (genre 100) et un test d'existence des clés.
Par contre, tu peux tester toi même, l'activation du DHCP passe par la modification de ces clés :
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\IDCARTE\Parameters\Tcpip
Avec IDCARTE l'identifiant de ta carte réseau. A toi de pondre un script avec ça