Dynamically
changing TCP/IP DNS addresses
See Also
• Creating new domain names (for personal
use) (Internet tip)
• How to connect two computers and access
their drives through the Internet (Windows tip)
• What class should my TCP/IP network be? (Internet
tip)
• Who's connected to you? (Windows tip)
If you
connect to the Internet, a Domain Name Server (DNS) is generally required to
convert English Internet addresses to their natural numeric IP addresses -- to
convert www.chami.com to 1.2.3.4 for example.
If you have
a need to dynamically change your DNS servers from your program, you can do so
by calling the the following "SetTCPIPDNSAddresses()" function with a
list of DNS IP addresses separated by a single space.
uses
Registry;
procedure
SaveStringToRegistry_LOCAL_MACHINE(
sKey, sItem, sVal : string );
var
reg : TRegIniFile;
begin
reg := TRegIniFile.Create( '' );
reg.RootKey := HKEY_LOCAL_MACHINE;
reg.WriteString(
sKey, sItem, sVal + #0 );
reg.Free;
end;
Listing #1
: Delphi code. Right click registry.pas to download.
procedure
SetTCPIPDNSAddresses(
sIPs : string );
begin
//
// if using Windows NT
//
SaveStringToRegistry_LOCAL_MACHINE(
'SYSTEM\CurrentControlSet' +
'\Services\Tcpip\Parameters',
'NameServer',
sIPs );
//
// if using Windows 95
//
SaveStringToRegistry_LOCAL_MACHINE(
'SYSTEM\CurrentControlSet' +
'\Services\VxD\MSTCP',
'NameServer',
sIPs );
end;
Listing #2
: Delphi code. Right click setdns.pas to download.
For
example, if you want to set two DNS server addresses -- 1.2.3.4 and 5.6.7.8
here's how your function call would look like:
SetTCPIPDNSAddresses(
'1.2.3.4 5.6.7.8' );