- Offizieller Beitrag
Hi,
in ähnlicher Form hatte ich das schon mal. Hier werden alle Adapter, so wie sie auch unter <Systemsteuerung> <Netzwerkverbindungen> aufgelistet sind ermittelt, inklusive der derzeitigen Konfiguration. Die Rückgabewerte sind aus dem Funktionskopf ersichtlich.
_GetAllNetworkAdapter
#include<Array.au3>
$ar = _GetAllNetworkAdapter()
_ArrayDisplay($ar)
;===============================================================================
; Function Name: _GetAllNetworkAdapter()
; Description:: Auslesen aller vorhandenen Netzwerkadapter und deren Konfiguration
; Parameter(s): keine
; Requirement(s): keine
; Return Value(s): Erfolg Array[n][0] Adapter Name (wie in Systemsteuerung ==> Netzwerkverbindungen)
; Array[n][1] Adapter Beschreibung
; Array[n][2] IP-Adresse
; Array[n][3] SubNetMask
; Array[n][4] DHCP-Enabled (0/1)
; Array[n][5] DHCP IP-Adresse
; Array[n][6] DHCP SubNetMask
; Array[n][7] DHCP Default Gateway
; Array[n][8] DHCP Server
; Fehler Array[0][0] Leerstring (kein Adapter vorhanden)
; Author(s): BugFix ([email='bugfix@autoit.de'][/email])
;===============================================================================
Func _GetAllNetworkAdapter()
Local $arOut[1][9] = [['']], $arrSubKeys, $arrSubKeys2, $strValue, $sub, $sub2, $sub3, $val
Local $oReg = ObjGet("winmgmts:{impersonationLevel=impersonate}!\\.\root\default:StdRegProv")
$oReg.EnumKey (0x80000002, "SYSTEM\CurrentControlSet\Control\Network", $arrSubKeys)
For $sub In $arrSubKeys
If RegRead('HKLM\SYSTEM\CurrentControlSet\Control\Network\' & $sub, 'Class') = 'Net' Then ExitLoop
Next
$oReg.EnumKey (0x80000002, "SYSTEM\CurrentControlSet\Control\Network\" & $sub, $arrSubKeys)
$oReg.EnumKey (0x80000002, "SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002bE10318}", $arrSubKeys2)
If IsArray($arrSubKeys) Then
For $sub2 In $arrSubKeys
$val = RegRead('HKLM\SYSTEM\CurrentControlSet\Control\Network\' & $sub & '\' & $sub2 & '\' & 'Connection', 'Name')
If Not @error Then
If $arOut[UBound($arOut)-1][0] <> '' Then ReDim $arOut[UBound($arOut)+1][9]
$arOut[UBound($arOut)-1][0] = $val
For $sub3 In $arrSubKeys2
If RegRead("HKLM\SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002bE10318}\" & $sub3, 'NetCfgInstanceId') = $sub2 Then
$arOut[UBound($arOut)-1][1] = _
RegRead("HKLM\SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002bE10318}\" & $sub3, 'DriverDesc')
ExitLoop
EndIf
Next
$arOut[UBound($arOut)-1][2] = RegRead('HKLM\SYSTEM\CurrentControlSet\Services\' & $sub2 & '\Parameters\Tcpip', 'IPAddress')
$arOut[UBound($arOut)-1][3] = RegRead('HKLM\SYSTEM\CurrentControlSet\Services\' & $sub2 & '\Parameters\Tcpip', 'SubnetMask')
$arOut[UBound($arOut)-1][4] = RegRead('HKLM\SYSTEM\CurrentControlSet\Services\' & $sub2 & '\Parameters\Tcpip', 'EnableDHCP')
$arOut[UBound($arOut)-1][5] = RegRead('HKLM\SYSTEM\CurrentControlSet\Services\' & $sub2 & '\Parameters\Tcpip', 'DhcpIPAddress')
$arOut[UBound($arOut)-1][6] = RegRead('HKLM\SYSTEM\CurrentControlSet\Services\' & $sub2 & '\Parameters\Tcpip', 'DhcpSubnetMask')
$arOut[UBound($arOut)-1][7] = RegRead('HKLM\SYSTEM\CurrentControlSet\Services\' & $sub2 & '\Parameters\Tcpip', 'DhcpDefaultGateway')
$arOut[UBound($arOut)-1][8] = RegRead('HKLM\SYSTEM\CurrentControlSet\Services\' & $sub2 & '\Parameters\Tcpip', 'DhcpServer')
EndIf
Next
EndIf
Return $arOut
EndFunc ;==>_GetAllNetworkAdapter
Edit: Im Download ist der Funktionskopf falsch mit den Arrayangaben. Hier im Post habe ich es korrigiert