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

Windows 从登录ID(LUID)获取UserToken(C+;+;),windows,session,sessionid,terminal-services,Windows,Session,Sessionid,Terminal Services,我正试图更好地理解Windows会话是如何工作的,所以如果我在这个问题上有一些奇怪的错误,请告诉我 我使用LsaEnumerateLogonSessions()获取系统中所有已登录的会话。 现在我有了表示登录的LUID,如果我理解正确,它表示登录的用户或类似于构建it用户的系统 现在,如果用户X启动一个进程,Windows会给该进程一个表示X的令牌 是否有办法(在Windows服务中)从LUID获取用户的令牌? 我知道我可以从进程句柄获取它,但这不是我想要的。您可以使用获取会话id,然后使用从该

我正试图更好地理解Windows会话是如何工作的,所以如果我在这个问题上有一些奇怪的错误,请告诉我

我使用
LsaEnumerateLogonSessions()
获取系统中所有已登录的会话。 现在我有了表示登录的LUID,如果我理解正确,它表示登录的用户或类似于构建it用户的系统

现在,如果用户X启动一个进程,Windows会给该进程一个表示X的令牌

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

您可以使用获取会话id,然后使用从该进程句柄获取令牌。请注意,您可能需要作为本地系统运行
WTSQueryUserToken
(请参阅“”。

感谢您的快速回答!!!:-)这就是我现在正在尝试的,但还不够好:假设用户X连接到控制台。如果LUID属于用户系统,则LsaGetLogonSessionData()返回会话ID 0。调用WTSQueryUserToken()返回用户X的令牌,而不是系统的令牌。好的,看起来是您需要的。谢谢,它看起来是正确的函数!虽然我想从我的流程中调用并不是那么简单,甚至不可能。如果我设法执行我想要的,我将打印代码。再次感谢!:-)