Как узнать имя домена Windows NT/2000?

Previous  Top  Next

    
 

 

 

Code:

function GetNTDomainName: string;

var hReg: TRegistry;

begin

hReg := TRegistry.Create;

hReg.RootKey := HKEY_LOCAL_MACHINE;

hReg.OpenKey('SOFTWARE\Microsoft\Windows NT\CurrentVersion

\Winlogon', false );

Result := hReg.ReadString( 'DefaultDomainName' );

hReg.CloseKey;

hReg.Destroy;

end;

 

 

©Drkb::03296

Взято из http://forum.sources.ru

 

 


Code:

function NetServerGetInfo (serverName : PWideChar; level : Integer;

       var bufptr : Pointer) : Cardinal; stdcall; external 'NETAPI32.DLL';

function NetApiBufferFree (buffer : Pointer) : Cardinal; stdcall; external 'NETAPI32.DLL';

 

type

SERVER_INFO_503 = record

   sv503_sessopens : Integer;

   sv503_sessvcs : Integer;

   sv503_opensearch : Integer;

   sv503_sizreqbuf : Integer;

   sv503_initworkitems : Integer;

   sv503_maxworkitems : Integer;

   sv503_rawworkitems : Integer;

   sv503_irpstacksize : Integer;

   sv503_maxrawbuflen : Integer;

   sv503_sessusers : Integer;

   sv503_sessconns : Integer;

   sv503_maxpagedmemoryusage : Integer;

   sv503_maxnonpagedmemoryusage : Integer;

   sv503_enablesoftcompat :BOOL;

   sv503_enableforcedlogoff :BOOL;

   sv503_timesource :BOOL;

   sv503_acceptdownlevelapis :BOOL;

   sv503_lmannounce :BOOL;

   sv503_domain : PWideChar;

   sv503_maxcopyreadlen : Integer;

   sv503_maxcopywritelen : Integer;

   sv503_minkeepsearch : Integer;

   sv503_maxkeepsearch : Integer;

   sv503_minkeepcomplsearch : Integer;

   sv503_maxkeepcomplsearch : Integer;

   sv503_threadcountadd : Integer;

   sv503_numblockthreads : Integer;

   sv503_scavtimeout : Integer;

   sv503_minrcvqueue : Integer;

   sv503_minfreeworkitems : Integer;

   sv503_xactmemsize : Integer;

   sv503_threadpriority : Integer;

   sv503_maxmpxct : Integer;

   sv503_oplockbreakwait : Integer;

   sv503_oplockbreakresponsewait : Integer;

   sv503_enableoplocks : BOOL;

   sv503_enableoplockforceclose : BOOL;

   sv503_enablefcbopens : BOOL;

   sv503_enableraw : BOOL;

   sv503_enablesharednetdrives : BOOL;

   sv503_minfreeconnections : Integer;

   sv503_maxfreeconnections : Integer;

end;

PSERVER_INFO_503 = ^SERVER_INFO_503;

 

 

function Get_Computer_Name: string;

var

dwlen: DWORD;

begin

dwlen := MAX_COMPUTERNAME_LENGTH + 1;

Setlength(Result, dwlen);

GetComputerName(pchar(Result), dwlen);

Result := StrPas(pchar(Result));

end;

 

function GetDomainName : string;

var

err : Integer;

buf : pointer;

fDomainName: string;

wServerName : WideString;

begin

wServerName := Get_Computer_Name;

err := NetServerGetInfo (PWideChar (wServerName), 503, buf);

if err = 0 then

try

   fDomainName := PSERVER_INFO_503 (buf)^.sv503_domain;

finally

   NetAPIBufferFree (buf)

end;

result := fDomainName;

end;

 

 

procedure TForm1.Button1Click(Sender: TObject);

begin

Label1.Caption := GetDomainName;

end;

 

 

©Drkb::03297

Взято с сайта http://www.swissdelphicenter.ch/en/tipsindex.php