从进程ID中检测用户名

何我可以得到用户帐户名称,运行与指定的ID进程。 有没有这个API函数?

我正在使用Windows,C ++。

没有直接执行此操作的API函数,但可以将几个API调用组合起来执行此操作。 当然,您的程序需要满足所有适用于您感兴趣的流程的ACL。

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

一旦你有这个句柄,你可以调用OpenProcessToken ,请求TOKEN_QUERY访问权限。

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

一旦你完成它们,不要忘记在进程句柄和令牌CloseHandle上调用CloseHandle