如何用语言更改一个电脑的的IP及网关和DNS参数??? ( 积分: 20 )

  • 主题发起人 主题发起人 wei0916
  • 开始时间 开始时间
W

wei0916

Unregistered / Unconfirmed
GUEST, unregistred user!
如何用语言更改一个电脑的的IP及网关和DNS参数?????
 
如何用语言更改一个电脑的的IP及网关和DNS参数?????
 
语言?编程实现还是用windows命令实现?

其实都一样,编程也可以调用windows命令,虽然改注册表也行。。。嘿嘿 可惜我不熟

这样:
netsh interface ip set address Local dhcp
netsh interface ip set dns local dhcp
ipconfig /renew
这3句话是把名称为Local的网络连接,IP和DNS都设成自动获得

netsh interface ip set address Local static 10.0.160.21 255.255.255.0 10.0.160.1 0
netsh interface ip set dns local static 219.232.48.61
ipconfig /renew
这个是把名称为Local的网络连接,IP设成10.0.160.21,子网掩码255.255.255.0,网关10.0.160.1
DNS219.232.48.61

你可以直接在程序里用winexec(netsh interface ip set address Local dhcp',sw_hide);这样调用就OK
 
修改注册表可以,但我记不得了,
谁知道共享一下吧^_^
 
使用 IP Helper
 
但是我想用DELPHI怎么实现?
 
以前在别人电脑上看到过用DELPHI做的网关及IP切换小软件,这是不是很难呀.
 
我顶,请求给点分哈。:)
 
网关和IP切换的软件我也做过,以前在家和公司换IP用的

就是用那2句话实现 很简单
 
那两句话在DELPHI能直接使用,能编译通过吗
 
不是在delphi直接使用,是用delphi程序通过
addstr:='netsh interface ip set address '+conname+' static '+IP+' '+mask+' '+gateway+' 1';
dnsstr:='netsh interface ip set dns '+conname+' static '+dns;

exehwnd:=shellexecute(application.Handle,'open',pchar(addstr),nil,nil,sw_HIDE);
waitforsingleobject(exeHwnd,infinite);

这样调用
 
我在DELPHI里调用如下但是编译通不过,说MASK,GATEWAY没有定义,是不是这样调用呀.
var addstr:string;
var dnsstr:string;
var exehwnd:thandle;
begin
addstr:='netsh interface ip set address '+'winxp'+' static '+'192.168.0.1'+' '+mask+' '+gateway+' 1';
exehwnd:=shellexecute(application.Handle,'open',pchar(addstr),nil,nil,sw_HIDE);
waitforsingleobject(exeHwnd,infinite);
 
晕 当然没定义啊。。。。。mask是子网掩码 gateway是网关 是你自己指定的啊
你要是设置网络里的IP不也要指定这3个吗~?
 
你的命令行(netsh ...)在MSDOS方式下通过后再在Delphi中操作
 
addstr:='netsh interface ip set address '+'winxp'+' static '+'192.168.0.1'+' '+'255.255.255.0'+' '+'192.168.222.222'+' 1';
exehwnd:=shellexecute(application.Handle,'open',pchar(addstr),nil,nil,sw_HIDE);
waitforsingleobject(exeHwnd,infinite);
我跟踪了一下,这里EXEHWND返回为2,但是我的电脑的配置没有改变呀
 
2? 那是错误 ERROR_FILE_NOT_FOUND 文件未找到

你的winxp里放的是什么东西? 应该是网络连接的名称

你先把那句话在cmd里执行一下看看行不行
 
exehwnd:=shellexecute(application.Handle,'open','netsh','interface ip set address winxp static 192.168.0.1 255.255.255.0 192.168.222.222 1',nil,sw_HIDE);
 
返回值为42,但还是无效呀.
exehwnd:=shellexecute(application.Handle,'open','netsh','interface ip set address winxp static 192.168.0.1 255.255.255.0 192.168.222.222 1',nil,sw_HIDE);
我改为下面的:
exehwnd:=shellexecute(application.Handle,'open','netsh','interface ip set address winxp static 192.168.0.88 255.255.255.5 192.168.222.222 9',nil,sw_HIDE);
在XP下调用,返回42后,查看IP及网关还有掩码都没有改变.
 
帮你顶一下
 
你先运行cmd 然后执行你这句话:
netsh interface ip set address winxp static 192.168.0.88 255.255.255.5 192.168.222.222 9
看看能不能通过

另外,我是这样用的:
addstr:='netsh interface ip set address '+conname+' static '+IP+' '+mask+' '+gateway+' 1';
dnsstr:='netsh interface ip set dns '+conname+' static '+dns;

exehwnd:=shellexecute(application.Handle,'open',pchar(addstr),nil,nil,sw_HIDE);
waitforsingleobject(exeHwnd,infinite);
可以改IP
 
后退
顶部