如何获取Windows会话列表?

时间:2009-07-06 17:04:06

标签: c# windows

我正在尝试找到一种获取Windows会话列表的方法?我需要与用户选项卡上任务管理器中显示的信息相同的信息。我需要知道用户是否处于活动状态,以及他/她是否在远程桌面会话中登录。

有关如何使用C#/ Windows XP Pro做到这一点的想法吗?

5 个答案:

答案 0 :(得分:9)

作为起点,您可以通过运行命令

获取登录用户的列表
qwinsta

从命令提示符。

这将产生类似

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

并列出任何远程会话。

答案 1 :(得分:5)

通过P / Invoke使用LsaEnumerateLogonSessions。在枚举后你还需要LsaFreeReturnBuffer进行清理。

答案 2 :(得分:4)

我相信你需要使用P / Invoke来检索这些信息。

this MSDN page中记录了相关的API。

答案 3 :(得分:3)

另一种方法是使用Sysinternals的Logonsessions实用程序:

http://technet.microsoft.com/en-us/sysinternals/bb896769.aspx

答案 4 :(得分:2)

您不需要使用Pinvoke。 WMI做得很好,并且#34;从Win32_Process"中选择名称,SessionId。在root \ cimv2名称空间中。而且,它可以从远程机器调用。简单。在select中添加where子句以微调你得到的内容。