如何在Windows下查询用户的会话ID?

问题描述:

假设在计算机上有两个用户名为A和B,我们可以在cmd.exe中使用命令“query session”来获取每个用户名的所有会话ID。如何在Windows下查询用户的会话ID?

我的问题如下:

1,我怎样才能通过API(用户模式或内核模式)查询给定的用户名的会话ID?

2,如何通过API(用户模式或内核模式)查询给定会话ID的用户名?

在此先感谢!

您可以使用Remote Desktop Services API

1,如何通过API (用户模式或内核模式)查询给定用户名的会话ID?

简单地得到使用WTSEnumerateSessions的所有会话,遍历它们,用WTSQuerySessionInformation获取用户名,并检查它是否匹配与否。

或者,如果您有该用户的an access token,则可以使用GetTokenInformation为其检索会话ID。

2,如何通过API (用户模式或内核模式)查询给定会话ID的用户名?

正如您从前面的答案中可以猜出的那样,您可以使用WTSQuerySessionInformation从会话ID获取用户名。

+0

非常感谢尼古拉。这只是我想要的。 – xmllmx

GetCurrentProcessId会得到进程ID(显然!),那么你可以使用ProcessIdToSessionId获得会话ID。

然后是GetUserName函数。