我正在寻找一个工具来知道本地网络上的给定计算机是否被用户远程访问,理想情况下,我想知道该用户是谁.在我公司,我们共享虚拟机,如果使用任何远程计算机,我们不得不向团队中的成员询问.我想要有一些仪表板,可以告诉我使用什么电脑,什么电脑是免费的.
我很乐意使用任何需要在需要监控的机器上安装服务的商业解决方案或类似的东西.
如果从正在查询的系统加入到同一个域的Windows客户端进行查询,并且可能需要上述和超出标准域用户的某些权限,则会使以下内容变得更加容易.如果您遇到身份验证/权限问题,那将是我检查的第一件事.
至少有一个可用的工具,就像Windows XP所说的“qwinsta”一样.后来的Windows版本都有qwinsta和“query session”.
qwinsta /server:computer01 SESSIONNAME USERNAME ID STATE TYPE DEVICE console 0 Conn wdcon rdp-tcp 65536 Listen rdpwd administrator 2 Disc rdpwd
这显示用户“管理员”登录但已断开连接.由于在此示例中,computer01是具有默认“管理”RDP许可证的Windows Server 2003系统,因此会有一个第二个会话侦听某人连接.
连接到以前断开连接的会话后再次运行相同的命令如下所示:
SESSIONNAME USERNAME ID STATE TYPE DEVICE [unchanged output removed] rdp-tcp#25 administrator 2 Active rdpwd
这足以回答“目前通过RDP活跃的人”,如果您使用个人用户名,则应该回答“谁”.如果您全部使用“testuser”或“管理员”或其他东西,您可能想知道“从什么客户端”的答案,而上面没有给出答案.
上面给出了一个快速的基本答案,而不需要额外的工具.有关更详细的信息,您可以查看cassia library或PSTerminalServices(建立在桂皮上).有关更多详细信息,请参阅this question中的一些答案.
我的第一个想法是使用诸如PsLoggedOn或LogonSessions之类的Sysinternals工具.然后,我在this blog post from 2003发现了以前未知的我的qwinsta和rwinsta工具.