Здравствуйте, msb, Вы писали:
<>
Вот прототип, только для общего смысла:
std::string GetProcessUser(HANDLE hProcess) {
HANDLE hToken;
std::string Result;
if(OpenProcessToken(hProcess, TOKEN_QUERY, &hToken)) {
DWORD dwLen;
GetTokenInformation(hToken, TokenUser, NULL, 0, &dwLen);
if(dwLen > 0)
{
TOKEN_USER* ptu = (TOKEN_USER*)new BYTE[dwLen];
if(GetTokenInformation(hToken, TokenUser, ptu, dwLen, &dwLen)) {
SID_NAME_USE nSidNameUse;
TCHAR szUser[1024], szDomain[1024];
DWORD dwUserBuf = ARRAY_SIZE(szUser), dwDomainBuf = ARRAY_SIZE(szDomain);
if(LookupAccountSid(NULL, ptu->User.Sid, szUser, &dwUserBuf,
szDomain, &dwDomainBuf, &nSidNameUse))
{
Result = std::string(szDomain) + _T("\\") + szUser;
}
}
SAFE_DELETE_ARRAY_EX(BYTE, ptu);
}
}
return Result;
}
Получить хендл по PID — OpenProcess
It is always bad to give advices, but you will be never forgiven for a good one.
Oscar Wilde