龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 软件开发 > VC开发 >

查看进程令牌信息源代码(4)

时间:2009-12-30 15:42来源:未知 作者:admin 点击:
分享到:
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(!GetTokenInformat

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;
}

精彩图集

赞助商链接