如何在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获取用户名。
答
GetCurrentProcessId
会得到进程ID(显然!),那么你可以使用ProcessIdToSessionId
获得会话ID。
然后是GetUserName
函数。
非常感谢尼古拉。这只是我想要的。 – xmllmx