dxjabc 发表于 2010-12-31 14:59:28

如何判断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

ceoguang 发表于 2010-12-31 15:11:20

NetworkCards下面会有很多键值,但是你网卡的ID却是唯一的.

dxjabc 发表于 2010-12-31 15:25:18

是的,我是对照着网卡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:44:25

本帖最后由 netegg 于 2011-1-1 08:53 编辑

HKLM\SYSTEM\ControlSet001\Services\Tcpip\Parameters\Interfaces\"&$networkcard项中有一个ipaddress值,dhcp可用时这个值的数据是空或者根本没有,把这个值设置下或新建,dhcp的值可以不管
页: [1]
查看完整版本: 如何判断IP是DHCP分配的还是手动指定的?