Как узнать имя пользователя, который владеет процессом?
От: msb Россия  
Дата: 21.04.06 11:54
Оценка:
Диспетчер задач это делает легко, но какие функции он использует?
Как зная PID можно узнать имя пользователя от которого выполняется процесс?

Пробывал:
ProcessIdToSessionId
WTSQuerySessionInformation

но это работает только для терминального сервера...
а как быть на локальном компьютере?
Re: Как узнать имя пользователя, который владеет процессом?
От: ekamaloff Великобритания  
Дата: 21.04.06 12:20
Оценка: +1
Здравствуйте, 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
Re[2]: Как узнать имя пользователя, который владеет процессо
От: msb Россия  
Дата: 21.04.06 12:56
Оценка:
Здравствуйте, ekamaloff, Вы писали:

E>Здравствуйте, msb, Вы писали:


E><>


E>Вот прототип, только для общего смысла:


Спасибо, все получилось!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.