2009-07-06 90 views
8

我想找到一種方法來獲取Windows會話列表?我需要與「用戶」選項卡上任務管理器中顯示的信息相同的信息。我需要知道用戶是否處於活動狀態,以及他/她是否在遠程桌面會話中登錄。如何獲取Windows會話列表?

關於如何用C#/ Windows XP Pro做到這一點的任何想法?

回答

4

我相信你需要使用P/Invoke來檢索這些信息。

相關的API記錄在this MSDN page

8

以此爲起點,你可以得到用戶的列表運行以下命令

qwinsta 

從命令提示符下登錄。

這將給像

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

輸出,並列出任何遠程會話。

2

你並不需要使用的PInvoke。 WMI做到了,並且:在root \ cimv2命名空間中選擇「從Win32_Process中選擇Name,SessionId」。而且,它可以從遠程機器調用。簡單。在選擇的where子句中添加以微調返回的內容。

+0

這不會返回與用戶選項卡上任務管理器上相同的信息。它返回會話ID的整數標識符,而不是用於創建進程的帳戶的用戶名或SID。 – codekaizen 2017-12-29 03:53:03