![列出所有当前 RDP 会话](https://linux22.com/image/486540/%E5%88%97%E5%87%BA%E6%89%80%E6%9C%89%E5%BD%93%E5%89%8D%20RDP%20%E4%BC%9A%E8%AF%9D.png)
我们在客户端服务器上运行某个应用程序。该应用程序在控制台会话上运行,基本上管理一些批处理。我们偶尔会发现应用程序没有运行,显然这种情况只会在客户抱怨应用程序的工作没有完成之后才会发生。应用程序关闭的原因多种多样,从内部错误到故意关闭再到服务器重启。如果是后者,我可以在事件查看器中看到证据。在其他情况下,我正在寻找一种方法来发现在应用程序关闭时谁登录了。
我觉得合理的方法是通过批处理文件运行应用程序,一旦应用程序关闭,随后的批处理命令将列出当前登录的用户,其中一个用户可能是关机的责任人。问题是每个人都使用网络管理员凭据登录服务器(!),并且只能通过用户的计算机名称来区分不同的会话。
值得一提的是:
- 该应用程序执行传统的服务工作,但无法转换为服务工作。
- 我尝试了一些 Sysinternal 工具,但没有一个列出我需要的信息。
- 我宁愿不使用事件查看器。它已经很乱了。日志文件更好。
答案1
更新:: 所以也许
netstat -n -a | findstr 3389
就是你要找的。
**更新前:**我认为您正在寻找的是:
query session
query user
但这些最多只是权宜之计。你应该退一步,从更深层次上解决这个问题。也许是一个监督服务或类似的东西。
答案2
您可以使用net session
Windows 上的命令来查找谁登录了(本地和远程)。我目前没有 Windows 机器,所以很抱歉我无法给您完整的命令,但net session help
应该......帮助您?:)
答案3
许多网络监控包可以让您监控单个进程,并在它们停止/重新启动等时提醒您。
我们使用称为 JFFNMS (http://www.jffnms.org/) 监控几台接收作业的机器上的 QuarkXpress。有时,作业会导致应用程序崩溃,当这种情况发生时,JFFNMS 会发送电子邮件通知我们。
答案4
可能有点横向思维,但在我们的几台 TS 服务器上,我们有一个登录脚本,它将各种信息写入服务器上的文件夹。我们这样做的原因与您完全无关,但您可以轻松做到这一点,以记录谁在登录。在 TS 会话中,环境变量 CLIENTNAME 设置为执行连接的工作站的名称,因此它可以很简单:
date /t >>C:\somefolder\%CLIENTNAME%.log
time /t >>C:\somefolder\%CLIENTNAME%.log
echo %USERNAME% >>C:\somefolder\%CLIENTNAME%.log
echo ---------- >>C:\somefolder\%CLIENTNAME%.log
JR