求助IP修改时获取网卡名称为"本地连接 2",时不正常(解决)
本帖最后由 fjvip 于 2009-9-13 21:28 编辑;求助IP修改时获取网卡名称为"本地连接 2",时不正常。通过试验表明以下代码只要名称中不含空格都可以正常获取网卡变量名称,然后修改。可是如果网卡名称为“本地连接 2”空格 2的时候,这时取到了变量了,但也无法完成修改,请高手指教。下列的'netsh interface ip add dns name =' &$netsh& ' 这样表达有什么不正确的地方?
;获取网卡名称
Dim $objwmiservice = ObjGet('winmgmts:\\localhost\root\CIMV2'), $netsh
$colitems = $objwmiservice.ExecQuery('SELECT * FROM Win32_NetworkAdapter', 'WQL', 0x10 + 0x20)
If IsObj($colitems) Then
For $objitem In $colitems
If $objitem.netconnectionid <> '' Then
$netsh = $objitem.netconnectionid
EndIf
Next
EndIf
;修改IP
GUICtrlSetData($Edit4_1, "2、当前网卡名称: " & $netsh & @CRLF, "1")
Sleep(500)
GUICtrlSetData($Edit4_1, "3、修改IP地址为: " & $sdip & @CRLF, "1")
Sleep(500)
GUICtrlSetData($Edit4_1, "4、修改子网掩码为: " & $mask & @CRLF, "1")
Sleep(500)
GUICtrlSetData($Edit4_1, "5、修改网关为: " & $gateway & @CRLF, "1")
RunWait('netsh interface ip set address name =' &$netsh& 'source = static addr = ' & $sdip & ' mask = ' & $mask & ' gateway = ' & $gateway & ' gwmetric = 0', "c:\windows\system32", @SW_HIDE)
GUICtrlSetData($Edit4_1, "6、修改DNS1为: " & $Dns & @CRLF, "1")
RunWait('netsh interface ip set dns name =' &$netsh& 'source = static addr = ' & $Dns & ' register = PRIMARY', "c:\windows\system32", @SW_HIDE)
GUICtrlSetData($Edit4_1, "7、修改DNS2为: " & $Dns & @CRLF, "1")
RunWait('netsh interface ip add dns name =' &$netsh& 'addr = ' & $Dns & ' index=2', "c:\windows\system32", @SW_HIDE) 试下修改最后一行RunWait('netsh interface ip add dns name ="' & $netsh & '"addr = ' & $Dns & ' index=2', "c:\windows\system32", @SW_HIDE) 把这 name =' &$netsh& ',替换成 name ="' & $netsh & '" 这个格式后,还是不行。
测试时网卡名称为"本地连接 2" 这样的形式的名称,
我看问题还是name ="' & $netsh & '" 不等于name="本地连接 2"
不知道为什么,名称后面有一个空格了,就不行,如果任何一个名称没有空格都可以实现。
请教高手! 把run换成msgbox看看那一句的结果
msgbox(0,0,'netsh interface ip add dns name ="' & $netsh & '"addr = ' & $Dns & ' index=2') 本帖最后由 fjvip 于 2009-9-13 20:35 编辑
弹出的提示也确实是name="我爱中国 3",可是你看状态,还是没有修改成功 ;以下代码可以解决了,谢谢!;获取网卡名称
Dim $objwmiservice = ObjGet('winmgmts:\\localhost\root\CIMV2'), $netsh
$colitems = $objwmiservice.ExecQuery('SELECT * FROM Win32_NetworkAdapter', 'WQL', 0x10 + 0x20)
If IsObj($colitems) Then
For $objitem In $colitems
If $objitem.netconnectionid <> '' Then
$netsh = $objitem.netconnectionid
EndIf
Next
EndIf
;修改IP
GUICtrlSetData($Edit4_1, "2、修改IP地址为: " & $sdip & @CRLF, "1")
Sleep(500)
GUICtrlSetData($Edit4_1, "3、修改子网掩码为: " & $mask & @CRLF, "1")
Sleep(500)
GUICtrlSetData($Edit4_1, "4、修改网关为: " & $gateway & @CRLF, "1")
RunWait('netsh interface ip set address name = "' & $netsh & '"source = static addr = ' & $sdip & ' mask = ' & $mask & ' gateway = ' & $gateway & ' gwmetric = 0', "c:\windows\system32", @SW_HIDE)
GUICtrlSetData($Edit4_1, "5、修改DNS1为: " & $Dns & @CRLF, "1")
RunWait('netsh interface ip set dns name = "' & $netsh & '"source = static addr = ' & $Dns & ' register = PRIMARY', "c:\windows\system32", @SW_HIDE)
GUICtrlSetData($Edit4_1, "6、修改DNS2为: " & $Dns & @CRLF, "1")
RunWait('netsh interface ip add dns name = "' & $netsh & '"addr = ' & $Dns & ' index=2', "c:\windows\system32", @SW_HIDE)
学习了!这个挺实用的! :face (28):好像应该排除摄像头的TV连接 这样安全点
页:
[1]