C++ получает имя пользователя от процесса

У меня есть дескриптор процесса с

HANDLE hProcess = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, 0, THE_PROCESS_ID);

Как я могу получить имя пользователя пользователя, который выполняет процесс?

Я использую неуправляемый код (никакая.NET).

9
задан Billy ONeal 21 April 2010 в 19:53
поделиться

3 ответа

Используйте OpenProcessToken , чтобы получить токен (очевидно), затем GetTokenInformation с TokenOwner ], чтобы получить SID владельца. Затем вы можете использовать LookupAccountSid , чтобы получить имя пользователя.

21
ответ дан 4 December 2019 в 07:47
поделиться

WMI - это, вероятно, путь наименьшего сопротивления. Вы также должны иметь возможность получить токен с помощью OpenProcessToken, а затем GetTokenInformation, чтобы получить SID владельца. Затем вы можете превратить SID в имя пользователя.

1
ответ дан 4 December 2019 в 07:47
поделиться

WMI должен иметь возможность сообщить вам эту информацию. В противном случае вам придется полагаться на недокументированные забавы в ntdll.dll. Похоже, другие нашли решения, которые не используют ntdll.dll - используйте их, а не недокументированный материал.

0
ответ дан 4 December 2019 в 07:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: