从进程ID中检测用户名

Roa*_*oar 5 c++ windows winapi

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

我正在使用Windows,c ++.

Aar*_*otz 12

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

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

一旦掌握了这个句柄,就可以打电话OpenProcessToken,请求TOKEN_QUERY访问权限.

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

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