我按照网上写了个设置dns地址的,在win2003下执行没有结果主要代码如下
procedure TForm1.SetTCPIPDNSAddresses( sIPs : string );
var Ver : TOsVersionInfo;
begin
Ver.dwOSVersionInfoSize:= SizeOf(Ver);
GetVersionEx(Ver);
if (Ver.dwPlatformId = VER_PLATFORM_WIN32_NT ) then
begin
// if using Windows NT
SaveStringToRegistry_LOCAL_MACHINE('SYSTEM\CurrentControlSet' +
'\Services\Tcpip\Parameters',
'NameServer',
sIPs );
end
else
if (Ver.dwPlatformId=VER_PLATFORM_WIN32_WINDOWS) then
// if using Windows 95
begin
SaveStringToRegistry_LOCAL_MACHINE(
'SYSTEM\CurrentControlSet' +
'\Services\VxD\MSTCP',
'NameServer',
sIPs );
end;
end;
procedure TForm1.SaveStringToRegistry_LOCAL_MACHINE(sKey,sItem,sVal:string);
var reg: TRegIniFile;
begin
reg := TRegIniFile.Create( '' );
try
begin
reg.RootKey := HKEY_LOCAL_MACHINE;
reg.WriteString( sKey, sItem, sVal + #0 );
end;
finally
reg.Free;
end;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
SetTCPIPDNSAddresses('192.168.0.1 192.168.0.254');
end;
procedure TForm1.SetTCPIPDNSAddresses( sIPs : string );
var Ver : TOsVersionInfo;
begin
Ver.dwOSVersionInfoSize:= SizeOf(Ver);
GetVersionEx(Ver);
if (Ver.dwPlatformId = VER_PLATFORM_WIN32_NT ) then
begin
// if using Windows NT
SaveStringToRegistry_LOCAL_MACHINE('SYSTEM\CurrentControlSet' +
'\Services\Tcpip\Parameters',
'NameServer',
sIPs );
end
else
if (Ver.dwPlatformId=VER_PLATFORM_WIN32_WINDOWS) then
// if using Windows 95
begin
SaveStringToRegistry_LOCAL_MACHINE(
'SYSTEM\CurrentControlSet' +
'\Services\VxD\MSTCP',
'NameServer',
sIPs );
end;
end;
procedure TForm1.SaveStringToRegistry_LOCAL_MACHINE(sKey,sItem,sVal:string);
var reg: TRegIniFile;
begin
reg := TRegIniFile.Create( '' );
try
begin
reg.RootKey := HKEY_LOCAL_MACHINE;
reg.WriteString( sKey, sItem, sVal + #0 );
end;
finally
reg.Free;
end;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
SetTCPIPDNSAddresses('192.168.0.1 192.168.0.254');
end;
解决方案 »
- 请问下应用系统正在做处理时,如何控制不能做其他的操作
- 关于JPEG文件中霍夫曼编码的问题??请教高手
- udl连接数据库出现的问题!
- 如何知道哪个字符是中文的?
- 火急!!!!PowerDdesigner11设计好的ORACLE9I数据表后导出的SQL语句中,字段名和表名都带上了双引号,如何取消?
- 关于打印报表到最后几页时如何去除列标题的疑难---请高手相助
- 只用Table控件的属性是否可以控制正反排序?
- 高分求救
- http://kingron.myetang.com/进不去了,那还有《猛科》下载啊
- 请问,用QuickRep1.Printer.PageCount取页数前,怎样知道QuickRep1.Prepare结束没有?
- 怎样使程序开机后自动运行,而且不需要登陆直接进入主程序?
- 请教(请教wudi_1982)查找子目录问题
它不能够识别win2003,所以没有结果。
获取windows版本的代码,请参看:http://www.delphibbs.com/keylife/iblog_show.asp?xid=2786
至于注册表,你自己在win2003用RegEdit来查找NameServer,估计路径和上面Windows NT的差不多,其它照搬。
就在nameserver那里,值已经变成了
192.168.0.1 192.168.0.254
但是网络设置还是原来的
不知道怎么回事
用netsh.exe或者IP Helper API改吧
给点链接?
bool SetIpconfig(String strIP,String mask,String gateway)
{
AnsiString strParam = " interface ip set address \"本地连接\" static ";
strParam+= strIP+" "+mask+" "+gateway+" "+"1";
try
{
ShellExecute(NULL,"open", "netsh",strParam.c_str(),NULL,SW_HIDE);
}
catch(...)
{
return false;
}
return true;
}bool SetDNS(String strDNS)
{
AnsiString strParam = " interface ip set dns \"本地连接\" static ";
strParam+= strDNS;
try
{
ShellExecute(NULL,"open", "netsh",strParam.c_str(),NULL,SW_HIDE);
}
catch(...)
{
return false;
}
return true;
}
这样就可以了,自己改delphi吧
SetIpForwardEntry
具体参看MSDN
我已经改成delphi的了
但执行起来还是不行,我的平台是win2003 sp1
没有结果