2009-07-06 11 views
8

Sto cercando un modo per ottenere un elenco di sessioni di Windows? Ho bisogno delle stesse informazioni di quella visualizzata nel Task Manager nella scheda Utente. Devo sapere se l'utente è attivo o meno e se ha effettuato l'accesso nella sessione di Desktop remoto.Come ottenere un elenco di sessioni di Windows?

Qualche idea su come farlo con C#/Windows XP Pro?

risposta

4

Credo che sarà necessario utilizzare P/Invoke per recuperare queste informazioni.

Le API pertinenti sono documentate in this MSDN page.

8

Come punto di partenza è possibile ottenere un elenco di utenti collegati eseguendo il comando

qwinsta 

Dal prompt dei comandi.

Questo darà output come

C:\WINDOWS\system32>qwinsta 
SESSIONNAME  USERNAME     ID STATE TYPE  DEVICE 
>console   me      0 Active wdcon 
rdp-tcp         65536 Listen rdpwd 

e elencherà tutte le sessioni remote.

2

Non è necessario utilizzare Pinvoke. WMI lo fa, e bene: "seleziona Nome, SessionId da Win32_Process" nel namespace root \ cimv2. E, può essere chiamato da una macchina remota. Più semplice. Aggiungi una clausola where nella select per perfezionare ciò che ottieni.

+0

Questo non restituisce le stesse informazioni del Task Manager nella scheda Utente. Restituisce un identificatore intero dell'ID di sessione, non il nome utente o il SID dell'account in base al quale è stato creato il processo. – codekaizen

Problemi correlati