Re: Под каким пользователем запущен процесс?
BOOL GetUserNameForProcess(HANDLE hProcess, PTSTR ptUser, DWORD *pdwUserLen, PTSTR ptDomain, DWORD *pdwDomainLen)
{
PTOKEN_USER ptiUser = NULL;
HANDLE hToken = NULL;
if (NULL == hProcess)
return FALSE;
__try {
if (!OpenProcessToken(hProcess, TOKEN_QUERY, &hToken))
return FALSE;
DWORD cbti = 0;
if (GetTokenInformation(hToken, TokenUser, NULL, 0, &cbti)) {
return FALSE;
} else {
if (ERROR_INSUFFICIENT_BUFFER != GetLastError())
return FALSE;
}
if (0 == cbti)
return FALSE;
ptiUser = (PTOKEN_USER)::HeapAlloc(GetProcessHeap(), 0, cbti);
if (!ptiUser)
return FALSE;
if (!::GetTokenInformation(hToken, TokenUser, ptiUser, cbti, &cbti))
return FALSE;
SID_NAME_USE snu;
if (!::LookupAccountSid(NULL, ptiUser->User.Sid, ptUser, pdwUserLen, ptDomain, pdwDomainLen, &snu))
return FALSE;
} __finally {
if (hToken)
::CloseHandle(hToken);
if (ptiUser)
::HeapFree(GetProcessHeap(), 0, ptiUser);
}
return TRUE;
}
Take it easy.
Пока на собственное сообщение не было ответов, его можно удалить.