大叔 发表于 2013-8-6 21:39:00

获取本机网络配置。WMI问题。 【已解决】

本帖最后由 大叔 于 2013-8-7 19:04 编辑

$objwmiservice = ObjGet('winmgmts:\\localhost\root\CIMV2')
$colitems = $objWMIService.ExecQuery ('SELECT * FROM Win32_NetworkAdapter', 'WQL', 0x10 + 0x20)
If IsObj($colitems) Then
      For $objitem In $colitems
                If $objitem.netconnectionid <> '' Then
                                        $a=$objitem.netconnectionid
                EndIf
      Next
        EndIf
$colItems = $objWMIService.ExecQuery("SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled != 0",'WQL', 0x10 + 0x20)
If IsObj($colItems) then
   For $objItem In $colItems
          If Not $objItem.DNSServerSearchOrder(0)='' Then
IniWrite("E:\NBMSClient\start.ini", "本机信息", "名称", $objItem.DNSHostName)
IniWrite("E:\NBMSClient\start.ini", "本机信息", "显示", @DesktopHeight&'X'&@DesktopWidth&'X'&@DesktopDepth&'X'&@DesktopRefresh)
IniWrite("E:\NBMSClient\start.ini", "本机信息", "网卡",$objItem.Description )
IniWrite("E:\NBMSClient\start.ini", "本机信息", "MAC0", $objItem.MACAddress)
IniWrite("E:\NBMSClient\start.ini", "本机信息", "连接", $a)
IniWrite("E:\NBMSClient\start.ini", "本机信息", "IP是", $objItem.IPAddress(0))
IniWrite("E:\NBMSClient\start.ini", "本机信息", "掩码", $objItem.IPSubnet(0))
IniWrite("E:\NBMSClient\start.ini", "本机信息", "网关", $objItem.DefaultIPGateway(0))
IniWrite("E:\NBMSClient\start.ini", "本机信息", "DNS0", $objItem.DNSServerSearchOrder(0))
IniWrite("E:\NBMSClient\start.ini", "本机信息", "DNS1", $objItem.DNSServerSearchOrder(1))
EndIf
        Next
        Else
   Msgbox(0,"出错了","No WMI Objects Found for class: " & "Win32_NetworkAdapterConfiguration" )
Endif以上代码是我现在用的。XP.SP3WIN7 都正常。但最近碰到了一个新的情况。有个单位简单限制某些电脑上网。
所以要求把这些电脑网卡的DNS 删掉了 只配IP 和网关。(这样打不开网站但可以上QQ)。
结果问题出来了。 不填DNS 上面的代码就会出错。 有DNS 的电脑就可以正常跑。原因不明 请高人指点。

大叔 发表于 2013-8-7 19:03:30

借用ACN_NET.au3里面的_NetworkAdapterInfo()函数搞定了。
从遍历的数组中筛选出网关存在的那组数据,再写入INI 多网卡和无DNS 都没问题。
页: [1]
查看完整版本: 获取本机网络配置。WMI问题。 【已解决】