2011-01-14 19 views
13

Sessions, stazioni di finestra e desktop.Sessions, stazioni e desktop

Una sessione consiste di tutti i processi e altri oggetti del sistema che rappresentano una sessione di accesso singolo utente. Le sessioni contengono Window Station e Window Le workstation contengono desktop.

Quanto sopra è da http://blogs.technet.com/b/askperf/archive/2007/07/24/sessions-desktops-and-windows-stations.aspx

(articoli simili dicono la stessa cosa, ad esempio blogs.technet.com/b/askperf/archive/2007/04/27/application-compatibility-session-0- isolation.aspx e blogs.msdn.com/b/ntdebugging/archive/2007/01/04/desktop-heap-overview.aspx)

Ho sempre capito che Sessioni e sessioni di accesso sono la stessa cosa .

Tuttavia, leggendo p. 474, Russinovich e Solomon, Windows Internals, quinta edizione, si dice (penultimo capoverso):

La funzione CreateProcessWithLogon crea anche un token con la creazione di una nuova sessione accesso con un primo processo, che è come il Il comando Runas avvia i processi con i token alternativi .

Quindi Runas crea una nuova sessione di accesso. Se usiamo Runas per eseguire il Blocco note con le credenziali di un altro utente, lo vediamo apparire sul desktop. Quindi Blocco note è in esecuzione sullo stesso desktop di tutto il resto. (Questo è, per quanto ho capito, il desktop predefinito in Window Station Winsta0, la stazione finestra interattiva.) Quindi ora abbiamo due sessioni di accesso associate alla stessa sessione (la cosa che contiene le stazioni finestra). Quindi sessioni e sessioni di accesso non sembrano essere la stessa cosa.

Qualcuno può confermare questo per favore?

Confuso

+2

La pagina Web di seguito fornisce una spiegazione illustrata di sessioni, finestre e desktop: http://securityinternals.blogspot.ae/2014/01/on-sesssion-windows-and-desktops.html – user295490

risposta

18

Ci sono in effetti due tipi di sessioni qui. Ecco la mia comprensione di come funzionano.

  1. Un logon session[2] è gestito dalla Local Security Authority[2], e gestisce l'ambito di un accesso utente. Questi vengono creati principalmente dal processo winlogon, ma anche secondariamente dalle funzioni API come LogonUser, CreateProcessAsUser e CreateProcessWithLogonW o dalle applicazioni che utilizzano queste funzioni, come il comando runas.

    una sessione di accesso non è legato ad alcun specifici Object Manager[2] concetti come window stations and desktops. È fondamentalmente solo un blocco di informazioni che contiene il SID di accesso e alcune informazioni di sicurezza memorizzate nella cache relative all'account. Questo blocco di informazioni, questa sessione di accesso, è ciò a cui punta access token.

  2. L'altro tipo di sessione viene talvolta definito sessione di Servizi terminal, sessione Terminal Server, Remote Desktop session, sessione di accesso (confusa com'è), sessione di accesso utente o sessione utente. Di solito, però, si chiama semplicemente una "sessione", senza ulteriori qualifiche.

    Questo è il tipo di sessione di cui si sentirà solitamente parlare ed è ciò che appartiene a window stations. Questo tipo di sessione came about supporta più accessi GUI interattivi, come fornito da Servizi terminal (ora noto come Remote Desktop) e ora viene utilizzato anche per supportare Fast User Switching. Le sessioni forniscono l'isolamento necessario tra gli oggetti Object Manager associati a ciascun accesso utente.

Non passo molto tempo fare con tutta questa roba, quindi sono un po 'confuso su alcuni dei dettagli, ma penso che questo è una rappresentazione piuttosto fiera del quadro complessivo. Spero che chiarisca un po 'le cose.

+0

Grazie! Dopo aver letto il capitolo 3 del fine settimana di Windows Internals e sperimentato gli strumenti di Sysinternals come le logonessions, ciò che descrivi si adatta all'immagine mentale che ho accumulato su ciò che sta accadendo. È solo un peccato che la maggior parte dei documenti tecnici M non riescano a distinguere tra i due animali. In particolare per il riferimento a [questo articolo] (http://homepage.ntlworld.com/jonathan.deboynepollard/FGA/windows-nt-session.html). Leggere questo solo ora ha contribuito a cristallizzare tutto. Di nuovo! – Confused

+0

Grazie ancora. Ho appena sprecato un'intera mattinata solo per scoprire che i doc stanno usando la parola "sessione" in un modo diverso. State provando a creare una sessione di console usando LogonUser invano, la funzione supera ma il token restituito è per una sessione LSA non una sessione interattiva. –

+0

Le finestre e i servizi terminal non sono concettualmente legati l'uno all'altro. In realtà c'era un tempo in cui TS non era parte integrante di Windows eppure avevamo Desktop e Window Station. – 0xC0000022L