我想找到一種方法來獲取Windows會話列表?我需要與「用戶」選項卡上任務管理器中顯示的信息相同的信息。我需要知道用戶是否處於活動狀態,以及他/她是否在遠程桌面會話中登錄。如何獲取Windows會話列表?
關於如何用C#/ Windows XP Pro做到這一點的任何想法?
我想找到一種方法來獲取Windows會話列表?我需要與「用戶」選項卡上任務管理器中顯示的信息相同的信息。我需要知道用戶是否處於活動狀態,以及他/她是否在遠程桌面會話中登錄。如何獲取Windows會話列表?
關於如何用C#/ Windows XP Pro做到這一點的任何想法?
我相信你需要使用P/Invoke來檢索這些信息。
相關的API記錄在this MSDN page。
以此爲起點,你可以得到用戶的列表運行以下命令
qwinsta
從命令提示符下登錄。
這將給像
C:\WINDOWS\system32>qwinsta
SESSIONNAME USERNAME ID STATE TYPE DEVICE
>console me 0 Active wdcon
rdp-tcp 65536 Listen rdpwd
輸出,並列出任何遠程會話。
通過P/Invoke使用LsaEnumerateLogonSessions。枚舉後,您還需要清理LsaFreeReturnBuffer。
另一種方法是使用Logonsessions實用Sysinternals公司:
http://technet.microsoft.com/en-us/sysinternals/bb896769.aspx
你並不需要使用的PInvoke。 WMI做到了,並且:在root \ cimv2命名空間中選擇「從Win32_Process中選擇Name,SessionId」。而且,它可以從遠程機器調用。簡單。在選擇的where子句中添加以微調返回的內容。
這不會返回與用戶選項卡上任務管理器上相同的信息。它返回會話ID的整數標識符,而不是用於創建進程的帳戶的用戶名或SID。 – codekaizen 2017-12-29 03:53:03