Q&A

  • 윈도우 사용자 리스트를 알아내고 싶어요..
고수님들...

등록된 윈도우 사용자 리스트를 가져오고 싶은데 방법이 있나요..
에고....찾다찾다 질문 드립니다.

2  COMMENTS
  • Profile
    라벤더 2006.07.01 02:39
    레코드를 하나 정의하구요..
    <!--CodeS-->
    USER_INFO_1 = record
        usri1_name: LPWSTR;
        usri1_password: LPWSTR;
        usri1_password_age: DWORD;
        usri1_priv: DWORD;
        usri1_home_dir: LPWSTR;
        usri1_comment: LPWSTR;
        usri1_flags: DWORD;
        usri1_script_path: LPWSTR;
      end;
      lpUSER_INFO_1 = ^USER_INFO_1;
    <!--CodeE-->

    외부 DLL을 로드합니다.
    <!--CodeS-->
      function NetUserEnum(ServerName: PWideChar; Level, Filter: DWORD; var Buffer: Pointer; PrefMaxLen: DWORD; var EntriesRead, TotalEntries, ResumeHandle: DWORD): Longword; stdcall; external 'netapi32.dll';
      function NetApiBufferFree(pBuffer: PByte): Longint; stdcall; external 'netapi32.dll';
    <!--CodeE-->

    버튼과 리스트박스가 폼 위에 하나씩 있을때...
    <!--CodeS-->
    procedure TForm1.Button1Click(Sender: TObject);
    var
      ERead: DWORD;
      TotalEntries: DWORD;
      UserInfo: lpUSER_INFO_1;
      lpBuffer: Pointer;
      ResumeHandle: DWORD;
      Counter: Integer;
      NetApiStatus: LongWord;
    begin
      ResumeHandle := 0;
      repeat
        NetApiStatus := NetUserEnum(nil, 1, 0, lpBuffer, 0, ERead, TotalEntries, ResumeHandle);
        UserInfo := lpBuffer;
        for Counter := 0 to ERead - 1 do
        begin
          listbox1.Items.Add(WideCharToString(UserInfo^.usri1_name) + ' -> ' +
                             WideCharToString(UserInfo^.usri1_comment));
          Inc(UserInfo);
        end;
        NetApiBufferFree(lpBuffer);
      until (NetApiStatus <> ERROR_MORE_DATA);
    end;
    <!--CodeE-->

    UserInfo^.usri1_name -> 요게 사용자 이름입니다~

    (김영대님 홈페이지 http://www.howto.pe.kr/ 에 있던거에요 ^^)

  • Profile
    김지수 2006.07.01 02:53
    그렇군요...
    감사합니다. ^^