Contributor: CHAMI


If you connect to the Internet a Domain Name Server (DNS) is generally
required to convert English Internet addresses to their natural IP
addresses -- to convert "www.somedomainname.com" to "1.2.3.5" for
example.If you have a need to dynamically change your DNS servers from
your program, all you have to do is call the following
"SetTCPIPDNSAddresses()" function with a list of IPs 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;

procedure SetTCPIPDNSAddresses(
  sIPs : string );
begin

// Windows NT
  SaveStringToRegistry_LOCAL_MACHINE(
    'SYSTEM\CurrentControlSet\'+
    'Services\Tcpip\Parameters',
    'NameServer',
    sIPs );

// Windows 95
  SaveStringToRegistry_LOCAL_MACHINE(
    'SYSTEM\CurrentControlSet\'+
    'Services\VxD\MSTCP',
    'NameServer',
    sIPs );
end;


For example, if you want to set two DNS servers -- "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' );