请问各位老鸟,在windows2000中,如何获得系统的DNS设置?(windows2000pro,or windows2000 ad server)我试过,dns设置在注册表中HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\{9AB8A5D5-A193-47FA-9C85-DE95D9C2E093} 这个项的nameserver底下,但是这个项是不是变的???或者还有其他方法没有???
解决方案 »
- 給寶貝征名
- fastReport的排版问题
- fastreport的问题?
- DevExpress ExpressBar 5.1
- fastreport中Picture控件的问题?
- K是什么意思啊?
- 关于FormulaOne的sheetname使用问题
- 请问在Oracle中如何定义Bool类型的字段?
- 关于windows消息问题:::::wndproc(var msg:tmessage)在哪里??inherit怎样使用?...还有更多请进..!!!
- ★★★有谁能帮我实现BDE直连数据库下的sql语句数据更新,我的信用可是很好的。
- 在本机调用远方机中的 EXE 文件,有几种办法?
- 如何才能让局域网中的一个指定IP的机器访问我的机器,而别的机器不可以。
通过ipconfig /all即可查出。
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\
下面的nameserver字段,但win2000下不是这样,如我上面所说。
但我没找到。
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;
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.
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;