查看进程令牌信息源代码(4)
int GetUserNameFromToken(HANDLE htoken, char user[])
{
char buff[1024], tusr[UULEN], domain[UULEN];
unsigned long size;
TOKEN_USER *tuser;
PSID sid;
SID_NAME_USE snu;
size = 1024;
if(!GetTokenInformation(htoken, TokenUser, (void*)buff, size, &size))
{
printf("GetTokenInformation error : 0
", GetLastError());
return false;
}
tuser = (TOKEN_USER*)buff;
sid = tuser->User.Sid;
size = UULEN;
if(!LookupAccountSid(NULL, sid, tusr, &size, domain, &size, &snu))
{
printf("LookupAccountSid error : 0
", GetLastError());
return false;
}
sprintf(user, "", domain, tusr);
return true;
}
int OutPutGroupsFromToken(HANDLE htoken)
{
char buff[1024];
unsigned long size = 1024;
TOKEN_GROUPS *tgrps;
if(!GetTokenInformation(htoken, TokenGroups, (void*)buff, size, &size))
{
printf("GetTokenInformation TokenGroups error : 0
", GetLastError());
return false;
}
tgrps = (TOKEN_GROUPS *)buff;
printf("
Belong to 0 groups
", tgrps->GroupCount);
PSID sid;
char group[UULEN], domain[UULEN];
SID_NAME_USE snu;
for(int i = 0; i < tgrps->GroupCount; i++)
{
sid = tgrps->Groups[i].Sid;
size = UULEN;
if(!LookupAccountSid(NULL, sid, group, &size, domain, &size, &snu))
printf("[group 0] error : 0
", i, GetLastError());
else printf("[group 0]
", i, domain, group);
}
return true;
}
- 上一篇:创建DirectX环境
- 下一篇:分析MFC中的映射