不同名称的本地连接如何改“自动获取IP地址” 已解决
本帖最后由 p7749 于 2013-1-3 13:42 编辑在如何自动获取IP地址这个问题上,前面的帖子都有说明,基本上就是用下面的语句:
#Include <Services.au3>
_Service_Start("Dhcp") ;打开DHCP服务
RunWait(@ComSpec & ' /c '&'netsh int ip set address name="本地连接" source=dhcp',"", @SW_HIDE) ;自动获取IP地址
RunWait(@ComSpec & ' /c '&'netsh int ip set dns name="本地连接" source=dhcp',"", @SW_HIDE) ;自动获取DNS
不过这里有个问题,那就是不同机器上的“本地连接”名称可能不一样,比如我自己的电脑本地连接就是“本地连接 4” 。
有什么办法不管本地连接是什么名称都可以把本地连接改成自动获取IP地址呢? 给您我上次作的东西,请自己再修改吧。
#include <array.au3>
#include <GUIConstantsEx.au3>
;~ get netadaptname
Local $oClassSet, $oClass, $oLocator
Local $oService, $sMesStr
$oLocator = ObjCreate("WbemScripting.SWbemLocator")
$oService = $oLocator.ConnectServer
$oClassSet = $oService.ExecQuery("Select * From Win32_NetworkAdapter Where NetConnectionID IS NOT NULL")
For $oClass In $oClassSet
$sMesStr = $sMesStr & "" & $oClass.NetConnectionID
$CardName = StringRegExp($sMesStr,"區域連線.+\d",3)
Next
;~ gui
$newIp = InputBox("IP","請輸入IP","10.1.")
If @error Then Exit
$newSubnet = "255.255.255.0"
$newDG = InputBox("Gateway","請輸入Gateway","10.1.")
If @error Then Exit
$run=runwait ('netsh interface ip set address name=' & '"' & $CardName & '" static ' & $newIP & ' '& $newSubnet & ' ' & $newDG & ' 1',"",@SW_Hide)
MsgBox(4096,"修改IP","已完成")
抱歉,我还真没看到您是要改成DHCP,稍微修改了下代码,请试试看。
#include <array.au3>
#include <GUIConstantsEx.au3>
;~ get netadaptname
Local $oClassSet, $oClass, $oLocator
Local $oService, $sMesStr
$oLocator = ObjCreate("WbemScripting.SWbemLocator")
$oService = $oLocator.ConnectServer
$oClassSet = $oService.ExecQuery("Select * From Win32_NetworkAdapter Where NetConnectionID IS NOT NULL")
For $oClass In $oClassSet
$sMesStr = $sMesStr & "" & $oClass.NetConnectionID
$CardName = StringRegExp($sMesStr, "區域連線.+\d", 3) ; 區域連線請改本地連接
Next
runwait ('netsh interface ip set address name=' & '"' & $CardName & '" dhcp ' ,"",@SW_Hide)
runwait ('netsh interface ip set dns name=' & '"' & $CardName & '" dhcp ' ,"",@SW_Hide)
上面的我自己測試過,在我電腦是可以運作的。 非常感谢您的回复,虽然我这个初学者,看不明白前面你引用的 COM或者 WMI的内容,但是仍然从你的程序中学会 了如何把AU3的变量代入DOS命令的方法。这是我刚想问的问题。
上面的问题我已经用一个看起来简单点和方法解决了。程序如下RunWait(@ComSpec & ' /c '&'ipconfig >>1.txt',"",@SW_HIDE)
$file=FileRead("1.txt")
$name=StringRegExp($file,"本.+(?=:)",2) ;找到本地连接的真实名称,存在变量$name 中
RunWait(@ComSpec & ' /c '&'netsh int ip set address name='&'"'&$name&'"'&' source=dhcp',"", @SW_HIDE)
RunWait(@ComSpec & ' /c '&'netsh int ip set dns name='&'"'&$name&'"'&' source=dhcp',"", @SW_HIDE)
FileDelete("1.txt") 都是用dos命令呀 上面的我自己測試過
页:
[1]