feelsky 发表于 2010-11-7 15:41:20

请教关于WMI获取DNS的函数代码的问题

在论坛上看到这样一段代码:Func _NetworkAdapterInfo()
        Local $colItem
        Local $objItem
        Local $colItems
        Local $objItems
        Local $objWMIService
        Local $Adapters
        $Adapters = 0
        $objWMIService = ObjGet("winmgmts:\\localhost\root\CIMV2")
        $colItem = $objWMIService.ExecQuery("Select * FROM Win32_NetworkAdapter Where NetConnectionStatus >0", "WQL", 0x30)
        If IsObj($colItem) Then
                For $objItem In $colItem
                        If $objItem.MACAddress = "00:00:00:00:00:00" Then ContinueLoop
                        $Adapters += 1
                        ReDim $Adapters
                        $Adapters[$Adapters] += $Adapters
                        $Adapters[$Adapters] = $objItem.NetConnectionStatus
                        $Adapters[$Adapters] = $objItem.Description
                        ;MsgBox( 0, "", $objItem.Description )
                        $Adapters[$Adapters] = $objItem.NetConnectionID
                        $Adapters[$Adapters] = $objItem.MACAddress
                        $Adapters[$Adapters] = $objItem.PNPDeviceID
                        $colItems = $objWMIService.ExecQuery('Select * FROM Win32_NetworkAdapterConfiguration Where MACAddress = "' & $Adapters[$Adapters] & '" And IPEnabled = True ', "WQL", 48)
                        If IsObj($colItems) Then
                                For $objItems In $colItems
                                        $Adapters[$Adapters] = $objItems.IPAddress(0)
                                        $Adapters[$Adapters] = $objItems.DefaultIPGateway(0)
                                        $Adapters[$Adapters] = $objItems.IPSubnet(0)
                                        $Adapters[$Adapters] = $objItems.DNSServerSearchOrder(0)
                                        $Adapters[$Adapters] = $objItems.DNSServerSearchOrder(1)
                                        $Adapters[$Adapters] = $objItems.SettingID
                                Next
                        EndIf
                Next
        EndIf
        Return $Adapters
EndFunc   ;==>_NetworkAdapterInfo现在有一个问题就是如果电脑中DNS只填了一个主DNS,另一个没有填 参数的情况下,打开就会出错:
$Adapters[$Adapters] = $objItems.DNSServerSearchOrder(1)^ERROR

Error:请求动作失败(请求于对象)

本人对WMI一点不懂,努力学习中,故求解决方法。先谢了

无名蜘蛛 发表于 2010-11-7 16:30:12

我也只填了一个DNS 测试没有出错

feelsky 发表于 2010-11-7 16:41:36

哦,原来如此,我是在WIN7环境下出现错误的。刚才在XP下测试了一下正常。

G,man。 发表于 2010-11-10 13:14:37

跟着学习,呵呵
页: [1]
查看完整版本: 请教关于WMI获取DNS的函数代码的问题