我们有一些Windows 10 Pro计算机与远程桌面启用。有运行Windows 10 Pro和Windows 10 Home的“客户端”机器。
是否可以从客户端计算机以编程方式检查远程计算机是否已被某人占用?也就是说,如果另一个远程客户端已经连接到它?如果是这样的话,我能做到这一点而不破坏现有的远程连接吗?
发布于 2021-01-27 07:48:22
当用户登录到启用远程桌面服务的计算机时,将为用户启动会话。每个会话都由一个唯一的会话ID标识。因为每个登录到远程桌面连接(RDC)客户端都会收到一个单独的会话ID。
参考:远程桌面会话
可以使用WTSEnumerateSessions函数检索指定RD会话主机服务器上所有会话的标识符。
WTSEnumerateSessions :检索远程桌面会话主机(RD会话主机)服务器上的会话列表。
注意:
如果要检索正在运行远程桌面服务的当前会话的会话ID,可以调用WTSQuerySessionInformation并为SessionId
参数指定WTS_CURRENT_SESSION
,为WTSInfoClass
参数指定WTSSessionId
。
发布于 2021-07-12 09:16:49
您可以从命令行使用query session
命令。
如果您与远程计算机在同一个本地网络上,则可以直接使用查询会话:
使用命令query session /SERVER:<remote pc name, or IP address>
如果有人主动登录到控制台,则返回console <username> Active
作为状态。然而,这也可能意味着有人登录,会话锁定,他们走开去喝咖啡。这并不意味着他们在会话中做了什么;他们只是登录到控制台。如果使用另一个远程登录软件(如TeamViewer ),也会出现这种状态,因为它是作为活动控制台登录的。
C:\Users\Myself>query session /server:LabServerPC
SESSIONNAME USERNAME ID STATE TYPE DEVICE
services 0 Disc
console LabUser 1 Active
rdp-tcp 65536 Listen
如果远程桌面会话已经在使用计算机,它将以活动状态的形式将其作为会话返回。在这种情况下,rdp-tcp#1 <username> Active
。
C:\Users\Myself>query session /server:LabServerPC
SESSIONNAME USERNAME ID STATE TYPE DEVICE
services 0 Disc
rdp-tcp#1 LabUser 1 Active
console 3 Conn
rdp-tcp 65536 Listen
如果您是通过VPN操作的,或者是在本机网络之外操作,那么使用SSH远程登录到PC,然后直接查询会话可能更容易。在这种情况下,您将只使用query session
。
https://stackoverflow.com/questions/65901692
复制相似问题