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