了解WTSEnumerateSessions中的会话信息

时间:2009-09-18 15:27:19

标签: winapi

我一直在尝试使用WTSEnumerateSessions来确定当前登录的用户数量,如post中所述。

我的主要问题是不了解如何使用返回的WTS_SESSION_INFO结构的内容来确定登录的用户数。在Windows XP Pro SP3中,当单个用户登录时,我会收到两个会话信息;

Win Station名称:console,ID:0
Win站名称:RDP-Tcp,ID:65536

在Windows 7旗舰版(64位)中,当单个用户登录时,我会收到两个会话信息:

Win Station名称:服务,ID:0
Win Station名称:console,ID:1

任何人都可以解释/指出我可以解释两种操作系统之间会话信息的不同之处和原因的资源方向吗?如何从这些信息中确定登录用户的数量?

非常感谢

2 个答案:

答案 0 :(得分:3)

为什么会话0已更改:http://msdn.microsoft.com/en-us/library/bb756986.aspx

ID为65536的RDP-Tcp会话是一个侦听会话 - 它只是侦听传入的连接。

要确定有多少用户登录,我建议使用非空用户名计算会话数。您可以使用WTSQuerySessionInformation获取会话的用户名。如果您使用的是.NET语言,则可能会发现Cassia library更方便使用。

答案 1 :(得分:1)

如果您想使用此功能获取有关已登录用户的信息,请考虑使用WTSEnumerateSessionsEx,因为它有一些有用的额外字段,包括pUserNamepDomainName

我认为WTSEnumerateSessionsWTSQuerySessionInformation的组合不那么麻烦。