如何获得Windows会话列表?

我正试图find一种方法来获得Windows会话列表? 我需要与“用户”选项卡上任务pipe理器中显示的信息相同的信息。 我需要知道用户是否活动,如果他/她在远程桌面会话中login。

任何想法如何用C#/ Windows XP专业版?

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

这个MSDN页面中记录了相关的API。

作为一个起点,您可以通过运行命令获取登录的用户列表

qwinsta 

从命令提示符处。

这会给出输出

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

并将列出任何远程会话。

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

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

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

你不需要使用Pinvoke。 WMI这样做,以及:“root \ cimv2”命名空间中的“从Win32_Process中选择Name,SessionId”。 而且,它可以从远程机器调用。 简单。 在select中添加where子句来微调你回来的东西。