如何判断IP是DHCP分配的还是手动指定的?
如题,在多网卡的状态下如何判断每个网卡的IP是手动指定还是DHCP分配的?论坛里有一哥们通过注册表的方式来搞,但我试了下有时候明明把IP改成手动的了,但注册表里那个enbaleDHCP的值还是1,也就是说通过下面的代码拿到的还是网卡的IP是DHCP分配的,各位还有没有好的方法?谢谢!$i = 1
While 1
$reg = RegEnumKey ("HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkCards",$i)
If @error <> 0 Then ExitLoop
$networkcard = RegRead ("HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkCards\"&$reg,"ServiceName")
$name = RegRead ("HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkCards\"&$reg,"Description")
$dhcpyn = RegRead ("HKLM\SYSTEM\ControlSet001\Services\Tcpip\Parameters\Interfaces\"&$networkcard,"EnableDHCP")
If $dhcpyn = 1 Then
MsgBox (0,"Test","网卡"&$name&"为自动获取IP")
ElseIf $dhcpyn = 0 Then
MsgBox (0,"Test","网卡"&$name&"为手动指定IP")
Else
MsgBox (0,"Test","你的电脑还怪耶 ")
EndIf
$i += 1
WEnd NetworkCards下面会有很多键值,但是你网卡的ID却是唯一的. 是的,我是对照着网卡ID去找的,结果还是不对
这个是查找网卡ID的au3
#Region ;**** 参数创建于 ACNWrapper_GUI ****
#AutoIt3Wrapper_outfile=LanNameAndID.exe
#EndRegion ;**** 参数创建于 ACNWrapper_GUI ****
Func _UpCmpLanNameIDInfo()
;======================================================
;
; 函数名称: _UpCmpLanNameIDInfo()
; 详细信息: 获取系统所有网卡名称和ID信息
; 返回值说明:
; 以二维数组方式返回.例如 $info=_UpCmpLanNameIDInfo()
; $info 第一块网卡的名称
; $info 第二块网卡的名称
; $info 第一块网卡的ID
; $info 第二块网卡的ID
; 其他网卡信息依次类推。。。
; 作者: viplight (viplight@qq.com)
; QQ: 530417369
;======================================================
Local $colItems = ""
Local $strComputer = "localhost"
Local $objWMIService
Local $wbemFlagReturnImmediately = 0x10
Local $wbemFlagForwardOnly = 0x20
Local $UpCmprAdapterID = 0
Local $UpCmprAdapterHostName = ""
Local $UpCmpLanNameID
$UpCmpLanNameID = 0
$objWMIService = ObjGet("winmgmts:\\" & $strComputer & "\root\CIMV2")
$colItems = $objWMIService.ExecQuery("SELECT * FROM Win32_TSNetworkAdapterListSetting", "WQL", _
$wbemFlagReturnImmediately + $wbemFlagForwardOnly)
If IsObj($colItems) then
For $objItem In $colItems
$UpCmpLan = $objItem.Description
$UpCmpID = $objItem.NetworkAdapterID
$UpCmprAdapterID += 1
$UpCmpLanNameID = $UpCmprAdapterID
$UpCmpLanNameID[$UpCmprAdapterID] = $UpCmpLan
$UpCmpLanNameID[$UpCmprAdapterID] = $UpCmpID
Next
EndIf
Return $UpCmpLanNameID
EndFunc ;==>_UpCmpLanNameIDInfo
Dim $test = _UpCmpLanNameIDInfo() 本帖最后由 netegg 于 2011-1-1 08:53 编辑
HKLM\SYSTEM\ControlSet001\Services\Tcpip\Parameters\Interfaces\"&$networkcard项中有一个ipaddress值,dhcp可用时这个值的数据是空或者根本没有,把这个值设置下或新建,dhcp的值可以不管
页:
[1]