从登录ID(LUID)获取UserToken(C ++)

时间:2010-12-26 13:48:18

标签: windows session sessionid terminal-services

我正在努力更好地了解Windows会话的工作原理,所以如果我在这个问题上有一些奇怪的错误,请告诉我。

我使用LsaEnumerateLogonSessions()来获取系统中所有已登录的会话。 现在我有一个代表登录的LUID,如果我理解正确,它代表一个用户登录或构建用户就像SYSTEM。

现在,如果用户X启动一个进程,Windows会为该进程提供一个代表X的标记。

是否有办法(在Windows服务中)从LUID获取用户的令牌? 我知道我可以从一个过程HANDLE获得它,但这不是我想要的。

1 个答案:

答案 0 :(得分:3)

您可以使用LsaGetLogonSessionData获取会话ID,然后使用WTSQueryUserToken从中获取令牌。请注意,您可能需要作为WTSQueryUserToken的LocalSystem运行(请参阅“How can I get the current user token for the physical session?”)。