2017-06-30 55 views
1

我试图从正常进程(不是提升,而不是SYSTEM等)获取当前用户令牌。我已经尝试过使用WTSQueryUserToken,但是您需要SYSTEM访问权限,因此无法工作。我在网上找到的唯一的东西是获取用户SID或名称,但我找不到有关获取当前用户令牌的任何信息。这甚至有可能吗?C++获取进程所有者/当前用户令牌

+0

你在“当前”用户下的意思是什么?你从哪个过程中尝试这样做? – RbMm

+0

'WTSQueryUserToken'用于检索属于登录到特定会话的用户的令牌,与进程无关。如果您想要检索与进程关联的令牌,请使用“OpenProcessToken”。 –

+0

我想从运行程序的用户那里获取用户令牌(该程序应该可以访问用户令牌,因为它已由该用户运行) – RoDaBaFilms

回答

2

因此,您需要与当前进程关联的令牌。这很直截了当:

if (!OpenProcessToken(GetCurrentProcess(), TOKEN_READ, &token_handle)) fail(); 

请注意,您可能需要指定不同的权限,具体取决于您获得该标记后打算使用的标记。如果要查询令牌,例如提取用户名,则TOKEN_READ权限是适当的。如果您想要启用权限,这是当前进程令牌的另一种常见用法,则需要使用TOKEN_ADJUST_PRIVILEGE