最近,为了使 PSExec 运行 powershell 脚本,我不得不了解 Windows 中的会话 ID。大多数时候,我注意到每台机器上的会话 ID 都是1
,但我注意到其中一台机器上的会话 ID 是2
。
它们的主要区别在于,在它所在的机器上1
,我通过物理站在计算机前直接登录 Windows,但在它所在的机器上,2
我已经从远程桌面连接中重新启动了它,然后从远程桌面会话中再次第一次登录(所以,因为我已经重新启动了,所以我从来没有通过物理站在计算机前直接登录过)。
1
以下是会话 ID 为(顶部)和2
(底部)的机器上的活动会话列表:
有没有关于如何设置这个数字的文档?它并不总是这样,这有点不方便。例如,1
我没想到在上面的观察中会被选中。2
答案1
Windows 使用会话作为隔离软件的方法。
如您的图片所示,会话 0 用于 Windows 系统服务,并在启动期间创建。此会话保存系统服务并将其与交互式用户隔离。
下一个会话 1 是为交互式控制台用户保留的,即使目前还没有。它将在用户从计算机的控制台登录时创建。
每次用户登录时,他的登录会话都会被分配下一个可用的会话 ID。这也适用于从远程桌面登录的用户,因此分配的会话 ID 从会话 2 开始。
如果在 Windows Server 上有多个用户远程登录,他们的会话号将为 2、3 等等,与分配给远程 RDP 登录的会话 ID 混合在一起。
会话机制将一个会话中运行的软件与另一个会话中运行的软件完全隔离,使得它无法以任何方式接触或影响在其他会话中运行的软件。
有关详细信息,请参阅 Microsoft 文章 远程桌面会话。