找回密码
 加入
搜索
查看: 3534|回复: 3

[网络通信] 如何判断IP是DHCP分配的还是手动指定的?

[复制链接]
发表于 2010-12-31 14:59:28 | 显示全部楼层 |阅读模式
如题,在多网卡的状态下如何判断每个网卡的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
发表于 2010-12-31 15:11:20 | 显示全部楼层
NetworkCards下面会有很多键值,但是你网卡的ID却是唯一的.
 楼主| 发表于 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[1][0] 第一块网卡的名称
; $info[2][0] 第二块网卡的名称
; $info[1][1] 第一块网卡的ID
; $info[2][1] 第二块网卡的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[10][2]
        $UpCmpLanNameID[0][0] = 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[0][0] = $UpCmprAdapterID
                                        $UpCmpLanNameID[$UpCmprAdapterID][0] = $UpCmpLan
                                        $UpCmpLanNameID[$UpCmprAdapterID][1] = $UpCmpID
                                Next
                        EndIf
Return $UpCmpLanNameID
EndFunc   ;==>_UpCmpLanNameIDInfo

Dim $test = _UpCmpLanNameIDInfo()
发表于 2011-1-1 08:44:25 | 显示全部楼层
本帖最后由 netegg 于 2011-1-1 08:53 编辑

HKLM\SYSTEM\ControlSet001\Services\Tcpip\Parameters\Interfaces\"&$networkcard项中有一个ipaddress值,dhcp可用时这个值的数据是空或者根本没有,把这个值设置下或新建,dhcp的值可以不管
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-6-9 08:55 , Processed in 0.078751 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表