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

[网络通信] 请教关于WMI获取DNS的函数代码的问题

[复制链接]
发表于 2010-11-7 15:41:20 | 显示全部楼层 |阅读模式
在论坛上看到这样一段代码:
  1. Func _NetworkAdapterInfo()
  2.         Local $colItem
  3.         Local $objItem
  4.         Local $colItems
  5.         Local $objItems
  6.         Local $objWMIService
  7.         Local $Adapters[1][12]
  8.         $Adapters[0][0] = 0
  9.         $objWMIService = ObjGet("winmgmts:\\localhost\root\CIMV2")
  10.         $colItem = $objWMIService.ExecQuery("Select * FROM Win32_NetworkAdapter Where NetConnectionStatus >0", "WQL", 0x30)
  11.         If IsObj($colItem) Then
  12.                 For $objItem In $colItem
  13.                         If $objItem.MACAddress = "00:00:00:00:00:00" Then ContinueLoop
  14.                         $Adapters[0][0] += 1
  15.                         ReDim $Adapters[UBound($Adapters) + 1][12]
  16.                         $Adapters[$Adapters[0][0]][0] += $Adapters[0][0]
  17.                         $Adapters[$Adapters[0][0]][1] = $objItem.NetConnectionStatus
  18.                         $Adapters[$Adapters[0][0]][2] = $objItem.Description
  19.                         ;MsgBox( 0, "", $objItem.Description )
  20.                         $Adapters[$Adapters[0][0]][3] = $objItem.NetConnectionID
  21.                         $Adapters[$Adapters[0][0]][4] = $objItem.MACAddress
  22.                         $Adapters[$Adapters[0][0]][11] = $objItem.PNPDeviceID
  23.                         $colItems = $objWMIService.ExecQuery('Select * FROM Win32_NetworkAdapterConfiguration Where MACAddress = "' & $Adapters[$Adapters[0][0]][4] & '" And IPEnabled = True ', "WQL", 48)
  24.                         If IsObj($colItems) Then
  25.                                 For $objItems In $colItems
  26.                                         $Adapters[$Adapters[0][0]][5] = $objItems.IPAddress(0)
  27.                                         $Adapters[$Adapters[0][0]][6] = $objItems.DefaultIPGateway(0)
  28.                                         $Adapters[$Adapters[0][0]][7] = $objItems.IPSubnet(0)
  29.                                         $Adapters[$Adapters[0][0]][8] = $objItems.DNSServerSearchOrder(0)
  30.                                         $Adapters[$Adapters[0][0]][9] = $objItems.DNSServerSearchOrder(1)
  31.                                         $Adapters[$Adapters[0][0]][10] = $objItems.SettingID
  32.                                 Next
  33.                         EndIf
  34.                 Next
  35.         EndIf
  36.         Return $Adapters
  37. EndFunc   ;==>_NetworkAdapterInfo
复制代码
现在有一个问题就是如果电脑中DNS只填了一个主DNS,另一个没有填 参数的情况下,打开就会出错:
$Adapters[$Adapters[0][0]][9] = $objItems.DNSServerSearchOrder(1)^ERROR

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

本人对WMI一点不懂,努力学习中,故求解决方法。先谢了
发表于 2010-11-7 16:30:12 | 显示全部楼层
我也只填了一个DNS 测试没有出错
 楼主| 发表于 2010-11-7 16:41:36 | 显示全部楼层
哦,原来如此,我是在WIN7环境下出现错误的。刚才在XP下测试了一下正常。
发表于 2010-11-10 13:14:37 | 显示全部楼层
跟着学习,呵呵
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2026-9-25 08:03 , Processed in 0.097029 second(s), 24 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2026 Discuz! Team.

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