1 BOOL GetUserSID(CString &Sid)
2 {
3 HANDLE hProcess = GetCurrentProcess();
4
5 if (hProcess)
6 {
7 HANDLE hToken;
8
9 if (OpenProcessToken(hProcess, TOKEN_QUERY, &hToken) && hToken)
10 {
11 BYTE tagTokenInfoBuf[256];
12 PTOKEN_USER tagTokenInfo = (PTOKEN_USER)&tagTokenInfoBuf;
13
14 if (GetTokenInformation(hToken, TokenUser, tagTokenInfoBuf, sizeof(tagTokenInfoBuf), NULL))
15 {
16 LPTSTR MySid = NULL;
17
18 ConvertSidToStringSid(tagTokenInfo->User.Sid, &MySid);
19 Sid = MySid;
20
21 LocalFree(MySid);
22
23 return TRUE;
24 }
25
26 CloseHandle(hToken);
27 }
28
29 CloseHandle(hProcess);
30 }
31
32 return FALSE;
33 }