Нет функции API, которая делает это напрямую, однако вы можете объединить несколько вызовов API для этого. Конечно, ваша программа должна удовлетворять любым ACL, которые применяются к процессу, который вы хотите исследовать.
Во-первых, учитывая идентификатор процесса, вам нужно открыть дескриптор процесса. Для этого вы можете использовать OpenProcess
, запрашивая право доступа PROCESS_QUERY_INFORMATION
.
Когда у вас есть этот дескриптор, вы можете позвонить OpenProcessToken
, запросив права доступа TOKEN_QUERY
.
Наконец, вы можете затем позвонить GetTokenInformation
, запросив информационный класс TokenUser
, который предоставит вам учетную запись пользователя для токена. Эта информация предоставляется вам в виде SID
. Чтобы преобразовать SID
в фактическое имя учетной записи, вы можете позвонить LookupAccountSid
.
Не забудьте вызвать CloseHandle
как для дескриптора процесса, так и для маркера токена, как только вы закончите с ними.