会话,窗口站和桌面。
会话由所有进程和 表示一个的其他系统对象 单个用户的登录会话。会议 包含窗口站和窗口 电台包含桌面。
上述内容来自http://blogs.technet.com/b/askperf/archive/2007/07/24/sessions-desktops-and-windows-stations.aspx
(类似文章也说同样的话,例如blogs.technet.com/b/askperf/archive/2007/04/27/application-compatibility-session-0-isolation.aspx和blogs.msdn.com/b/ ntdebugging /存档/ 2007/01/04 /桌面堆overview.aspx)
我一直都认为Sessions和登录会话是同一回事。
然而,阅读p。 474,Russinovich和Solomon,Windows Internals,第5版,它说(倒数第二段):
CreateProcessWithLogon函数 还可以通过创建新的令牌来创建令牌 使用初始进程登录会话, 这是Runas命令的方法 在替代方案下启动流程 令牌。
So Runas创建一个新的登录会话。如果我们使用Runas在不同用户的凭据下运行记事本,我们会看到它出现在桌面上。因此,Notepad与其他所有内容在同一台桌面上运行。 (据我所知,这是Window Station Winsta0中的默认桌面;交互式窗口站。)所以我们现在拥有的是与同一个Session相关联的两个登录会话(包含窗口站)。因此,会话和登录会话看起来不会是同一个。
有人可以确认吗?
困惑
答案 0 :(得分:20)
这里确实有两种类型的会话。以下是我对它们如何运作的理解。
logon session [2] 由Local Security Authority [{ {3}}] ,并管理用户登录的范围。这些主要由2进程创建,但其次由winlogon,LogonUser
和CreateProcessAsUser
等API函数创建,或者由使用这些函数的应用程序创建,例如CreateProcessWithLogonW
命令。
登录会话与runas
的任何特定Object Manager [2] 概念无关。它基本上只是一个包含登录SID的信息块和一些有关该帐户的缓存安全信息。这个登录会话的信息块是window stations and desktops指向的信息。
其他类型的会话有时称为终端服务会话,终端服务器会话,access token,登录会话(就像那样令人困惑),用户登录会话或用户会话。但通常,它只是被称为“会话”,没有进一步的限定。
这是您通常会听到的会话类型,也是Remote Desktop session所属的会话类型。此类会话window stations支持多个交互式GUI登录,由终端服务(现称为came about)提供,现在也用于支持Remote Desktop。会话在与每个用户登录关联的对象管理器对象之间提供必要的隔离。
我没有花太多时间搞乱所有这些东西,所以我对一些细节有点模糊,但我认为这是一个非常公平的整体画面。我希望它有点清楚。