빌더(TWx) 님이 쓰신 글 :
: 홍길동 님이 쓰신 글 :
: : 안녕 하세요~
: : 궁금한게 이써서 이렇게 질문을 올리게 되었습니다.
: : HKEY_USERS에 보면 S-1-5-21 이런식으로 SID가 있는데 현재 로그인한 SID 값을 가져 오는
: : 함수가 C++ builder에서 지원하는지 알고 싶습니다.^^
:
:
: 현재 사용자의 유효한 SID와... Domain/User를 알아내려면... 아래와 같은 식으로 Token을 이용해야 합니다...
:
:
: #include
: //---------------------------------------------------------------------------
: void __fastcall TForm1::Button1Click(TObject *Sender)
: {
: HANDLE hToken;
:
: if( OpenProcessToken(GetCurrentProcess(), TOKEN_QUERY, &hToken) )
: {
: LPVOID buf = NULL;
: DWORD dwSize = 0;
: GetTokenInformation(hToken, TokenUser, NULL, 0, &dwSize);
:
: buf = malloc(dwSize);
:
: if( GetTokenInformation(hToken, TokenUser, buf, dwSize, &dwSize) )
: {
: PSID pSid = ((PTOKEN_USER)buf)->User.Sid;
: LPWSTR szSid;
: ConvertSidToStringSid( pSid, &szSid );
:
: TCHAR user[200], domain[200];
: DWORD cbUser = 200, cbDomain = 200;
: SID_NAME_USE nu;
:
: LookupAccountSid(NULL, pSid, user, &cbUser, domain, &cbDomain, &nu);
:
: String sSid;
: String sDomainUser;
: sSid.printf(L"Current User Sid: %s", szSid);
: sDomainUser.printf(L"Current [Domain/User]: %s/%s", domain, user);
:
: Memo1->Lines->Add(sSid);
: Memo1->Lines->Add(sDomainUser);
: }
: free(buf);
: CloseHandle(hToken);
: }
: }
: //---------------------------------------------------------------------------
:
:
: 출력 예)
:
: Current User Sid: S-1-5-21-2840781927-2644186782-1112761140-1001
: Current [Domain/User]: PC8/WPC8
:
:
: ....
C++ builder에서 따로 지원 하는 함수는 없군요.ㅎ
제가 가지고 있는 소스(API로 구성된 라이브러리)에는 SID를 적지 않고
바로 레지스트리 값을 적는데 볼랜드는 그렇치 않터군요.
테스트 코드 까지 이렇게 적어 주셔서 감사 합니다.ㅎㅎ