为什么TokenOrigin总是返回相同的值?

时间:2016-04-21 02:11:23

标签: windows

我正在尝试确定特定用户进程的登录会话ID。为此,我检索了进程令牌,然后使用TokenOrigin选项调用GetTokenInformation

然而,答案总是似乎是0x3E7,即使我有两个不同的用户同时登录。显然这不可能是正确的。

什么是TokenOrigin实际查找,特别是0x3E7的意义是什么?如何获取令牌的真实登录会话ID?

1 个答案:

答案 0 :(得分:0)

TokenOrigin下的documentation for TOKEN_INFORMATION_CLASS,说:

  

如果令牌是由使用显式凭据的登录产生的,例如将名称,域和密码传递给LogonUser函数,那么TOKEN_ORIGIN结构将包含创建它的登录会话的ID。

那种听起来好像它意味着令牌所属的登录会话,但如果你仔细阅读它可以同样意味着与之关联的登录会话执行身份验证操作的进程,结果确实是返回的内容。在Windows 7中,0x3E7通常是winlogon.exe的登录会话,负责验证交互式登录。

如果我们look under logon identifier in the glossary说:

  

要从访问令牌中检索登录ID,请调用TokenStatistics的GetTokenInformation函数;登录ID位于AuthenticationId成员中。

我已经确认这可以按预期工作。