홍길동 님이 쓰신 글 :
: 안녕 하세요~
: 궁금한게 이써서 이렇게 질문을 올리게 되었습니다.
: 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
....
|