我正试图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子句来微调你回来的东西。