从进程ID中检测用户名

时间:2010-07-03 18:12:03

标签: c++ windows winapi

我可以获得用户帐户名,该帐户名使用指定的ID运行。这有什么api功能吗?

我正在使用windows,c ++。

1 个答案:

答案 0 :(得分:12)

没有直接执行此操作的API函数,但是您可以组合一些API调用来执行此操作。当然,您的程序需要满足应用于您有兴趣检查的过程的任何ACL。

首先,给定进程ID,您需要打开进程的句柄。您可以使用OpenProcess,请求PROCESS_QUERY_INFORMATION访问权限。

完成此操作后,您可以致电OpenProcessToken,请求TOKEN_QUERY访问权限。

最后,您可以调用GetTokenInformation,请求TokenUser信息类,它将为您提供令牌的用户帐户。此信息以SID的形式提供给您。要将SID转换为帐户的实际名称,您可以拨打LookupAccountSid

完成后,不要忘记在进程句柄和令牌句柄上调用CloseHandle