Delphi 调用netsh命令修改IP地址

先介绍一下Netsh命令的使用方法:
 
在这里跟大家介绍几个简单的指令
1.Show IP
1.1Cmd Mode
直接在 cmd 下面输入
netsh interface ip show address
亦可简写为
netsh int ip sh ad
看看,指令是不是和 Cisco nos 指令很像!非常怀疑是抄袭 Cisco 的。

1.2Netsh Mode
您也可以进入 netsh 的命令模式下
netsh                          //
进入到 netsh mode
netsh>int                    //
进入到 interface 子选项。
interface>ip                //
進入到 ip 子选项。
interface ip>show
show address -
显示 IP 位址。
show config -
显示 IP 位址及其他资料。
show dns -
显示 DNS 服务器位址。
show icmp -
显示 ICMP 统计
show interface - 显示 IP 介面统计
show ipaddress - 显示 IP 位址
show ipnet -
显示 IP net-to-media 对应
show ipstats - 显示 IP 统计
show joins -
显示加入的多点传送群组
show offload - 显示 offload 内容
show tcpconn -
显示 TCP 连线

show tcpstats - 显示 TCP 统计
show udpconn -
显示 UDP 连线
show udpstats -
显示 UDP 统计
show wins -
显示 WINS 服务器位址。
2.Set IP
下列是所有可用的指令。
这个內容中的指令:
set address -
在指定的介面设定 IP 位址或预设网关。
set dns -
设定 DNS 服务器模式及位址。
set wins -
设定 WINS 服务器模式及位址。

2.1.
设定IP位址
2.1.1.DHCP
设定
若您希望由DHCP取得IP位址可输入
interface ip>set ad "
区域连接" DHCP
或简写成
interface ip>set ad "
区域连接" D

2.1.2.
静态IP设定
2.1.2.1.
设定IP位址与子网关
netsh -
进入到 netsh mode
netsh>int -
进入到 interface 子选项。
interface>ip -
进入到 ip 子选项。
interface ip>set address name = "
区域连接" source = static addr = 10.2.2.100 mask = 255.255.255.0
可简写成
interface ip>set ad "
区域连接" s 10.2.2.100 255.255.255.0

2.1.2.2.
设定IP路由
interface ip>set address name = "
区域连接" gateway = 10.2.2.254 gwmetric = 1
可简写成
interface ip>set ad "
区域连接" ga=10.2.2.254 gw = 1

2.1.2.3
同时设定IP位址和路由
interface ip>set address name = "
区域连接" source = static addr = 10.2.2.100 mask = 255.255.255.0 gateway = 10.2.2.254 gwmetric = 1
可简写成
interface ip>set ad "
区域连接" s 10.2.2.100 255.255.255.0 10.2.2.254 1

设定完後,记得用sh ad去看一下设定的對不對。

2.3
设定DNS来源
若是由DHCP取得,请输入
interface ip>set dns "
区域连接" source=dhcp
若是使用静态设定,请输入
interface ip>set dns name = "
区域连接" source = static addr = 10.2.5.2
新增第二組DNS,请输入
interface ip>add dns name = "
区域连接" addr = 10.2.5.3

2.4
设定WINS来源
若是由DHCP取得,请输入
interface ip>set wins "
区域连接" source=dhcp
若是使用静态设定,请输入
interface ip>set wins name = "
区域连接" source = static addr = 10.2.5.10
新增第二組WINS,请输入
interface ip>add wins name = "
区域连接" addr = 10.2.5.17


3.
将网路状态设定导出/导入
3.1
导出
netsh -c interface dump >c:/netset.txt
当然,interface可以简写成intdump更可简化成d,所以就变成了
netsh -c int d >c:/netset.txt
3.2
导入
netsh -f c:/netset.txt
既可 

在Delphi中调用过程:
//设置成自动获取IP:
        NetShTxt := 'netsh interface ip set address ' + '"' + NetWork + '"' + ' source=dhcp';
        winexec(pchar(NetShTxt), sw_hide);
//以下代码设置IP地址和网关:
        NetShTxt := 'netsh interface ip set address name=' + '"' + NetWork + '"' + ' source=static addr=' +   IPAddress.IPString + ' mask=' + submask.IPString;
        winexec(pchar(NetShTxt), sw_hide);
       //网关
        NetshTxt := 'netsh interface ip set address name=' + '"' + NetWork + '"' + ' gateway=' + DefaultGateway.IPString + '  gwmetric=0';
        winexec(pchar(NetShTxt), sw_hide);
其中使用了IPEdit,这个组件,经过修改,已经基本能用于IP地址的输入和获取.本来从网上下载的以为能用,可实际用的过程中会发现不少问题.
设置DNS:
            NetshTxt := 'netsh interface ip  set dns name=' + '"' + NetWork + '"' + ' source=static addr=' + FirstDns.IPString + ' register=PRIMARY';
            winexec(pchar(NetShTxt), SW_Hide);
           //netsh interface ip add dns name="本地连接" addr=你的DNS的IP地址 index=2
            NetshTxt := 'netsh interface ip  add dns name=' + '"' + NetWork + '"' + ' addr=' + SecondDNS.IPString + ' index=2';
注意以上第二个DNS,添加用的命令:
 //netsh interface ip add dns name="本地连接" addr=你的DNS的IP地址 index=2
第三个DNS:
 //netsh interface ip add dns name="本地连接" addr=你的DNS的IP地址 index=3

后期调用winExec执行,感觉很不错,注意生成后使用GetAdaptersInfo函数进行检查一下IP地址是否设置正确.
在网络上流传的好多类似的工具都是这个原理.


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值