Q&A

  • WIN_NT4.0서버에있는 도메인명알기?
제목그대로 WIN_NT4.0에 등록된 도메인명을 알고싶거든요?

델파이 또는 MS-SQL7.0에서 도메인명을 알수있는 함수가 었는지요?



1  COMMENTS
  • Profile
    김영대 1999.09.03 19:29
    강성만 께서 말씀하시기를...

    > 제목그대로 WIN_NT4.0에 등록된 도메인명을 알고싶거든요?

    > 델파이 또는 MS-SQL7.0에서 도메인명을 알수있는 함수가 었는지요?



    제가 가지고 있던 자료인데 참고해 보세요

    아직 테스트는 해보지 못했으므로 개인적인 질문은 사양합니다



    // 기본 도메인명 가져오는 함수

    function GetDefaultDomain: String;

    var

    MyRegistry: TRegistry;

    begin

    MyRegistry := TRegistry.Create;

    with MyRegistry do

    begin

    RootKey := HKEY_LOCAL_MACHINE;

    OpenKey('SOFTWAREMicrosoftWindows NTCurrentVersionWinlogon',FALSE);

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

    CloseKey;

    Free;

    end;

    end;





    // 현재(로그온) 도메인명 가져오는 함수

    function GetCurrentDomain: string;

    var

    hProcess, hAccessToken : THandle;

    InfoBuffer : PChar;

    AccountName : array [0..UNLEN] of char;

    DomainName : array [0..DNLEN] of char;



    InfoBufferSize : Integer;

    AccountSize : Integer;

    DomainSize : Integer;

    snu : SID_NAME_USE;



    begin

    InfoBufferSize := 1000;

    AccountSize := sizeof (AccountName);

    DomainSize := sizeof (DomainName);



    hProcess := GetCurrentProcess;

    if OpenProcessToken (hProcess, TOKEN_READ, hAccessToken) then

    try

    GetMem (InfoBuffer, InfoBufferSize);

    try

    if GetTokenInformation(hAccessToken,TokenUser, InfoBuffer, InfoBufferSize, InfoBufferSize) then

    LookupAccountSid (Nil, PSIDAndAttributes (InfoBuffer)^.sid, AccountName, AccountSize,DomainName, DomainSize, snu)

    else

    RaiseLastWin32Error;

    finally

    FreeMem (InfoBuffer)

    end;

    Result := DomainName;

    finally

    CloseHandle (hAccessToken)

    end

    end;