请问各位老鸟,在windows2000中,如何获得系统的DNS设置?(windows2000pro,or windows2000 ad server)我试过,dns设置在注册表中HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\{9AB8A5D5-A193-47FA-9C85-DE95D9C2E093} 这个项的nameserver底下,但是这个项是不是变的???或者还有其他方法没有???

解决方案 »

  1.   

    要知道自己所在地的域名服务器地址,win98下通过winipcfg命令,win2000下 
    通过ipconfig /all即可查出。
      

  2.   

    天哪?偌大一个论坛,没人响应!wwwwwwwwwwwwwwwwwwwwww.................
      

  3.   

    delphi高级编程上用的是注册表中这个项
    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\
    下面的nameserver字段,但win2000下不是这样,如我上面所说。
      

  4.   

    有人说用GetNetworkParams,这个函数可以在MSDN的IInternet Protocol Helper里面有说
    但我没找到。
      

  5.   

    安来告诉你:
    const
      MAX_HOSTNAME_LEN               = 128; { from IPTYPES.H }
      MAX_DOMAIN_NAME_LEN            = 128;
      MAX_SCOPE_ID_LEN               = 256;
      MAX_ADAPTER_NAME_LENGTH        = 256;
      MAX_ADAPTER_DESCRIPTION_LENGTH = 128;
      MAX_ADAPTER_ADDRESS_LENGTH     = 8;Type
      TIPAddressString = Array[0..4*4-1] of Char;  PIPAddrString = ^TIPAddrString;
      TIPAddrString = Record
        Next      : PIPAddrString;
        IPAddress : TIPAddressString;
        IPMask    : TIPAddressString;
        Context   : Integer;
      End;  PFixedInfo = ^TFixedInfo;
      TFixedInfo = Record { FIXED_INFO }
        HostName         : Array[0..MAX_HOSTNAME_LEN+3] of Char;
        DomainName       : Array[0..MAX_DOMAIN_NAME_LEN+3] of Char;
        CurrentDNSServer : PIPAddrString;
        DNSServerList    : TIPAddrString;
        NodeType         : Integer;
        ScopeId          : Array[0..MAX_SCOPE_ID_LEN+3] of Char;
        EnableRouting    : Integer;
        EnableProxy      : Integer;
        EnableDNS        : Integer;
      End;function GetDNSList(out aDNSList:tstringlist):boolean;
    Function GetNetworkParams(FI : PFixedInfo; Var BufLen : Integer) : Integer;
             StdCall; External 'iphlpapi.dll' Name 'GetNetworkParams';
    implementation
    function GetDNSList(out aDnsList:tstringlist):boolean;
    Var
      FI   : PFixedInfo;
      Size : Integer;
      Res  : Integer;
      I    : Integer;
      DNS  : PIPAddrString;begin
      Size := 1024;
      GetMem(FI,Size);
      Res := GetNetworkParams(FI,Size);
      If (Res <> ERROR_SUCCESS) Then Begin
       result:=false;
        SetLastError(Res);
        RaiseLastWin32Error;
      End;
        aDnsList.Clear;
        I := 1;
        DNS := @FI^.DNSServerList;
        Repeat
          aDnsList.Add(DNS^.IPAddress);
          Inc(I);
          DNS := DNS^.Next;
        Until (DNS = nil);
      FreeMem(FI);
    result:=true;
    end;
      

  6.   

    其实问题早就有眉目了,只不过
    csdn真TMD的有毛病,前段时间发帖子老是一堆乱码,然后刷新就没了!:(
    我服了csdn,然后就好久没回帖子。
    刚才发帖子又说太长!我....................IPHLPAPI。pasunit IPHLPAPI;//------------------------------------------------------------------------------
    //     Partial translation of  IPHLPAPI.DLL ( IP-Helper API )
    //     D. Claessens <[email protected]
    //------------------------------------------------------------------------------interface
    uses
      Windows, winsock;
    const  VERSION       = '1.3';//------------- headers from Microsoft IPTYPES.H--------------------------------const
      ANY_SIZE      = 1;
      MAX_ADAPTER_DESCRIPTION_LENGTH = 128; // arb.
      MAX_ADAPTER_NAME_LENGTH = 256; // arb.
      MAX_ADAPTER_ADDRESS_LENGTH = 8; // arb.
      DEFAULT_MINIMUM_ENTITIES = 32; // arb.
      MAX_HOSTNAME_LEN = 128; // arb.
      MAX_DOMAIN_NAME_LEN = 128; // arb.
      MAX_SCOPE_ID_LEN = 256; // arb. // Node Types ( NETBIOS)
      BROADCAST_NODETYPE = 1;
      PEER_TO_PEER_NODETYPE = 2;
      MIXED_NODETYPE = 4;
      HYBRID_NODETYPE = 8;  NETBIOSTypes  : array[0..8] of string[20] =
        ( 'UNKNOWN', 'BROADCAST', 'PEER_TO_PEER', '', 'MIXED', '', '', '', 'HYBRID'
          ); // Adapter Types
      IF_OTHER_ADAPTERTYPE = 0;
      IF_ETHERNET_ADAPTERTYPE = 1;
      IF_TOKEN_RING_ADAPTERTYPE = 2;
      IF_FDDI_ADAPTERTYPE = 3;
      IF_PPP_ADAPTERTYPE = 4;
      IF_LOOPBACK_ADAPTERTYPE = 5;
      IF_SLIP_ADAPTERTYPE = 6;
     //
      AdaptTypes    : array[0..6] of string[10] =
        ( 'other', 'ethernet', 'tokenring', 'FDDI', 'PPP', 'loopback', 'SLIP' );//-------------from other MS header files---------------------------------------  MAX_INTERFACE_NAME_LEN = 256; { mrapi.h }
      MAXLEN_PHYSADDR = 8; { iprtrmib.h }
      MAXLEN_IFDESCR = 256; { --"---     }//------------------------------------------------------------------------------type
      TMacAddress = array[1..MAX_ADAPTER_ADDRESS_LENGTH] of byte;//------IP address structures---------------------------------------------------  PTIP_ADDRESS_STRING = ^TIP_ADDRESS_STRING;
      TIP_ADDRESS_STRING = array[0..15] of char; //  IP as xxx.xxx.xxx.xxx string
      //
      PTIP_ADDR_STRING = ^TIP_ADDR_STRING;
      TIP_ADDR_STRING = packed record // for use in linked lists
        Next: PTIP_ADDR_STRING;
        IpAddress: TIP_ADDRESS_STRING;
        IpMask: TIP_ADDRESS_STRING;
        Context: DWORD;
      end;//----------Fixed Info STRUCTURES---------------------------------------------  PTFixedInfo = ^TFixedInfo;
      TFixedInfo = packed record
        HostName: array[0..MAX_HOSTNAME_LEN + 4] of char;
        DomainName: array[0..MAX_DOMAIN_NAME_LEN + 2] of char;
        CurrentDNSServer: PTIP_ADDR_STRING;
        DNSServerList: TIP_ADDR_STRING;
        NodeType: UINT;
        ScopeID: array[0..MAX_SCOPE_ID_LEN + 4] of char;
        EnableRouting: UINT;
        EnableProxy: UINT;
        EnableDNS: UINT;
      end;//----------INTERFACE STRUCTURES-------------------------------------------------
      PTMibIfRow = ^TMibIfRow;
      TMibIfRow = packed record
        wszName: array[1..MAX_INTERFACE_NAME_LEN] of WCHAR;
        dwIndex: DWORD;
        dwType: DWORD;
        dwMTU: DWORD;
        dwSpeed: DWORD;
        dwPhysAddrLen: DWORD;
        bPhysAddr: array[1..MAXLEN_PHYSADDR] of byte;
        dwAdminStatus: DWORD;
        dwOperStatus: DWORD;
        dwLastChange: DWORD;
        dwInOctets: DWORD;
        dwInUcastPkts: DWORD;
        dwInNUCastPkts: DWORD;
        dwInDiscards: DWORD;
        dwInErrors: DWORD;
        dwInUnknownProtos: DWORD;
        dwOutOctets: DWORD;
        dwOutUCastPkts: DWORD;
        dwOutNUCastPkts: DWORD;
        dwOutDiscards: DWORD;
        dwOutErrors: DWORD;
        dwOutQLen: DWORD;
        dwDescrLen: DWORD;
        bDescr: array[1..MAXLEN_IFDESCR] of char; //byte;
      end;  TMIBIfArray = array of TMIBIFRow;
     //
      PTMibIfTable = ^TMIBIfTable;
      TMibIfTable = packed record
        dwNumEntries: DWORD;
        Table: array[0..ANY_SIZE - 1] of TMibIfRow;
      end;//------ADAPTER INFO STRUCTURES-------------------------------------------------  TTIME_T = array[1..325] of byte; // hack! MS time.h missing!  PTIP_ADAPTER_INFO = ^TIP_ADAPTER_INFO;
      TIP_ADAPTER_INFO = packed record
        Next: PTIP_ADAPTER_INFO;
        ComboIndex: DWORD;
        AdapterName: array[1..MAX_ADAPTER_NAME_LENGTH + 4] of char;
        Description: array[1..MAX_ADAPTER_DESCRIPTION_LENGTH + 4] of char;
        AddressLength: UINT;
        Address: array[1..MAX_ADAPTER_ADDRESS_LENGTH] of byte;
        Index: DWORD;
        aType: UINT;
        DHCPEnabled: UINT;
        CurrentIPAddress: PTIP_ADDR_STRING;
        IPAddressList: TIP_ADDR_STRING;
        GatewayList: TIP_ADDR_STRING;
        DHCPServer: TIP_ADDR_STRING;
        HaveWINS: BOOL;
        PrimaryWINSServer: TIP_ADDR_STRING;
        SecondaryWINSServer: TIP_ADDR_STRING;
        LeaseObtained: TTIME_T; //??
        LeaseExpires: TTIME_T; //??
      end;//--------ICMP-STRUCTURES------------------------------------------------------  PTMibICMPStats = ^TMibICMPStats;
      TMibICMPStats = packed record
        dwMsgs: DWORD;
        dwErrors: DWORD;
        dwDestUnreachs: DWORD;
        dwTimeEcxcds: DWORD;
        dwParmProbs: DWORD;
        dwSrcQuenchs: DWORD;
        dwRedirects: DWORD;
        dwEchos: DWORD;
        dwEchoReps: DWORD;
        dwTimeStamps: DWORD;
        dwTimeStampReps: DWORD;
        dwAddrMasks: DWORD;
        dwAddrReps: DWORD;
      end;  PTMibICMPInfo = ^TMibICMPInfo;
      TMibICMPInfo = packed record
        InStats: TMibICMPStats;
        OutStats: TMibICMPStats;
      end;//------------------imports from IPHLPAPI.DLL-----------------------------------function GetAdaptersInfo( pAdapterInfo: PTIP_ADAPTER_INFO;
      pOutBufLen: PULONG ): DWORD;
    stdcall; external 'IPHLPAPI.DLL';function GetNetworkParams( FixedInfo: PTFixedInfo; pOutPutLen: PULONG ): DWORD;
    stdcall; external 'IPHLPAPI.DLL';
    implementationend.
      

  7.   

    function TForm1.GetDNS( ): String;
    var
      InfoSize      : Longint;
      ErrorCode     : DWORD;
      pBuf          : PChar;
    begin
      InfoSize := 0;
      pBuf := NIL;
      GetNetworkParams( PTFixedInfo(pBuf), @InfoSize );
      GetMem( pBuf, InfoSize );
      ErrorCode := GetNetworkParams( PTFixedInfo(pBuf), @InfoSize );
      if ErrorCode = ERROR_SUCCESS then
        with PTFixedinfo(pBuf)^ do
        begin
          Result := DnsServerList.IpAddress;
        end
      else
        raise Exception.Create('Error occured!');
      FreeMem(pBuf);
    end;