在研究仅限于特定会话的 API 调用的问题时,我发现一些信息暗示当您使用 runas 以另一个用户的身份创建一个进程时,会发出一个新的安全令牌,并且该令牌在另一个会话中运行(作为新用户)但在正在运行的桌面上进行交互。
为了测试这一点,我使用 runas 以本地用户身份运行记事本,同时以域用户身份登录。当我运行 Sysinternals 的 Process Explorer 并添加 Session 列时,它显示我的域用户的进程和新的记事本进程都是会话 1。
当我从 Sysinternals 运行 Logonsessions 实用程序时,它说我的本地用户正在会话 0 中运行,而我的域用户是会话 1。
Query Session
...在 SESSIONNAME >控制台上仅返回我的域用户。
当我尝试检查这些实用程序之间的会话信息时,它们有什么区别?我似乎缺少一些基本知识来理解 Windows 如何跟踪和使用会话以及如何将进程和用户名与它们关联起来。