我正在尝试找到一种获取Windows会话列表的方法?我需要与用户选项卡上任务管理器中显示的信息相同的信息。我需要知道用户是否处于活动状态,以及他/她是否在远程桌面会话中登录。
有关如何使用C#/ Windows XP Pro做到这一点的想法吗?
答案 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子句以微调你得到的内容。