|
发表于 2012-3-15 22:28:40
|
显示全部楼层
我也帖相似的源码,取进程用户名- PTSTR GetProcessUser(DWORD dwProcessID)
- {
- STATIC TCHAR szUserName[MAX_PATH] = {0};
- BOOL fResult = FALSE;
- if (HANDLE hProc = OpenProcess(PROCESS_QUERY_INFORMATION,FALSE,dwProcessID))
- {
- HANDLE hToken = NULL;
- if (OpenProcessToken(hProc,TOKEN_QUERY,&hToken))
- {
- DWORD dwNeedLen = 0;
- GetTokenInformation(hToken,TokenUser,NULL,0,&dwNeedLen);
- if (dwNeedLen > 0)
- {
- PTOKEN_USER pTokenUser = (PTOKEN_USER)UMemInit(dwNeedLen + sizeof(DWORD));
- if (GetTokenInformation(hToken,TokenUser,pTokenUser,dwNeedLen,&dwNeedLen))
- {
- SID_NAME_USE sn;
- TCHAR szDomainName[MAX_PATH] = {0};
- DWORD dwDmLen = MAX_PATH;
- DWORD nNameLen = MAX_PATH;
- fResult = LookupAccountSid(NULL,
- pTokenUser->User.Sid,
- szUserName,
- &nNameLen,
- szDomainName,
- &dwDmLen,
- &sn);
- }
- _SafeFree(pTokenUser);
- }
- if (hToken)
- {
- CloseHandle(hToken);
- }
- }
- CloseHandle(hProc);
- }
- return fResult?(PTSTR)szUserName:NULL;
- }
复制代码 |
|