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 "区域连接" D2.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.02.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 = 12.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.32.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可以简写成int,dump更可简化成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地址是否设置正确.
在网络上流传的好多类似的工具都是这个原理.

设为dhcp   
   winexec('netsh    interface    ip    set    address    本地连接1    dhcp',SW_HIDE);   
    
   设为手工ip   
   WinExec('netsh    interface    ip    set    address    本地连接1    static    192.168.1.189    255.255.255.0    192.168.1.1    1',SW_HIDE);
 
设置IP地址  
  shellexecute(handle,'','netsh   interface   ip   set   address   '   +   SRegedit   +  
                            'static   192.168.0.1   255.255.255.0   192.168.0.10   1',nil,nil,sw_hide)

Delphi 调用netsh命令修改IP地址的更多相关文章

  1. Windows 系统采用批处理命令修改 ip 地址

    Windows 系统采用批处理命令修改 ip 地址 :: 设置IP地址 set /p choice=请选择设置类型(1:外网IP / 2:内网IP / 3:自动获取IP): echo. if &quo ...

  2. linux下使用命令修改IP地址

    使用root用户登录进入Linux,打开进去终端 在终端中输入:vi /etc/sysconfig/network-scripts/ifcfg-eth0 (最后的eth0是网卡名,我的是Auto_et ...

  3. 使用命令修改ip地址

    简述:以serverv 2012 r2为例 常用的几种,当然不全,希望能较快的速率记下一种便可 直接配置 1.      查看网卡的显示名称 2.      配置静态iP地址 3.      查看配置 ...

  4. 利用netsh命令设置IP地址/DNS服务器地址

    一.设置IP地址 1. 自动获取IP地址: netsh interface ip set address [name=]"本地连接" [source=]dhcp 2. 手动设置IP ...

  5. windows 7 命令修改IP地址

    netsh interface ip set address "本地连接"  static 172.17.15.97 255.255.255.0 172.17.12.1

  6. CMD修改IP地址

    在操作系统下,我们可以使用"本地连接"的属性来修改IP地址,但是如果我们要在多个IP地址之间切换,使用这种方法未免过于麻烦.我们可以使用NETSH命令来添加,相当简便.使用DOS修 ...

  7. 如何用脚本快速修改IP地址(Netsh)

    如何用脚本快速修改IP地址(Netsh) 如果通过Windows的网络属性修改Ip/网关,真是太麻烦了.最近一个项目经常要切换ip,所以我写了两个脚本:c:\116.bat netsh interfa ...

  8. Netsh命令-修改网络IP设置

    原文链接地址:https://blog.csdn.net/qq_38054198/article/details/77990914 静态设置IP 修改IP地址addr和子网掩码mask: \>n ...

  9. CentOS(RedHat)命令行永久修改IP地址、网关、DNS

    1.修改IP地址vim /etc/sysconfig/network-scripts/ifcfg-eth0DEVICE=eth0 #网卡名称BOOTPROTO=static #获取ip的方式(stat ...

随机推荐

  1. Why does yum return error: [Errno 256] No more mirrors to try ?

    https://access.redhat.com/solutions/203603 ISSUE yum update fails with the error : [Errno 256] No mo ...

  2. sizeof运算符来获取各种数据类型在内存中所占字节数--gyy整理

    C++并没有规定各种数据类型在内存中的存储大小,依赖于不同的编译器的不同而不同,要想获知当前编译器对各种数据类型分配的大小,可以通过sizeof运算符来获取. 使用方法1: sizeof(数据类型) ...

  3. C++不同进制整数

    在C++的整数常量中,整数分为十进制整数.八进制整数和十六进制整数. 那给出一个整型常量怎样区分是何种进制呢?/给出一个整型常量,如100,默认是十进制数,如果在该数前加0,如0100,则此数表示为八 ...

  4. Git教程(2)官方命令文档及常用命令表

    http://www.cnblogs.com/angeldevil/archive/2013/11/26/3238470.html 1,官方命令文档 http://www.git-scm.com/do ...

  5. Java版本的在指定目录及子目录下创建指定的文件

    和删除指定目录及子目录下名叫“xxx.txt”的所有文件一样,也是使用递归的方式实现的. 代码如下: public class Example826003 { private static FileO ...

  6. BZOJ2668: [cqoi2012]交换棋子

    题解: 可以戳这里:http://www.cnblogs.com/zig-zag/archive/2013/04/21/3033485.html 其实自己yy一下就知道这样建图的正确性了. 感觉太神奇 ...

  7. Google 多源码管理工具 gclient

    google的chromium项目是用gclient来管理源码的checkout, update等. gclient是google专门为这种多源项目编写的脚本,它可以将多个源码管理系统中的代码放在一起 ...

  8. 安装ArchLinux BIOS

    VMware默认下使用BIOS 本文基于ArchLinux(https://www.archlinux.org/)Current Release: 2013.08.01的ISO写的安装教程! ISO下 ...

  9. 基于Struts2的用户登录程序

    基本步骤: 1.新建Java工程,File>New>Project>Web>Dynamic Web Project,并将工程命名为:Struts2_Demo 2.导入strut ...

  10. 引用的时候js不能使用虚拟路劲,调试时用排除法测试

    今天碰到2个问题,搞了半天都没明白,又不报错: 就是js的问题:-->我返回了一个json,返回的json是正确的,但是view页面接受不到这个虚拟对象. 完全懵了,不知道为什么view页面接受 ...