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' );