C# 如何获取Windows会话列表?

C# 如何获取Windows会话列表?,c#,windows,C#,Windows,我正在设法获取Windows会话列表?我需要与任务管理器中“用户”选项卡上显示的信息相同的信息。我需要知道用户是否处于活动状态,以及是否登录到远程桌面会话 您知道如何使用C/Windows XP Pro实现这一点吗?我相信您需要使用p/Invoke来检索此信息 相关API记录在中 作为起点,您可以通过运行命令获得登录用户的列表 qwinsta 从命令提示中 这将产生如下输出: C:\WINDOWS\system32>qwinsta SESSIONNAME USERNAME

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


您知道如何使用C/Windows XP Pro实现这一点吗?

我相信您需要使用p/Invoke来检索此信息


相关API记录在中

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

qwinsta
从命令提示中

这将产生如下输出:

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

并将列出所有远程会话。

通过p/Invoke使用。您还需要在枚举后进行清理。

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


您不需要使用Pinvoke。WMI做到了这一点,而且做得很好:从根\cimv2命名空间中的Win32_进程中选择名称、会话ID。而且,它可以从远程机器调用。更简单。在select中添加where子句以微调返回的内容。

这不会返回与用户选项卡上任务管理器上相同的信息。它返回会话id的整数标识符,而不是用于创建进程的帐户的用户名或SID。