我正在努力更好地了解Windows会话的工作原理,所以如果我在这个问题上有一些奇怪的错误,请告诉我。
我使用LsaEnumerateLogonSessions()
来获取系统中所有已登录的会话。
现在我有一个代表登录的LUID,如果我理解正确,它代表一个用户登录或构建用户就像SYSTEM。
现在,如果用户X启动一个进程,Windows会为该进程提供一个代表X的标记。
是否有办法(在Windows服务中)从LUID获取用户的令牌? 我知道我可以从一个过程HANDLE获得它,但这不是我想要的。
答案 0 :(得分:3)
您可以使用LsaGetLogonSessionData
获取会话ID,然后使用WTSQueryUserToken
从中获取令牌。请注意,您可能需要作为WTSQueryUserToken
的LocalSystem运行(请参阅“How can I get the current user token for the physical session?”)。