列出所有当前的RDP会话

我们正在客户端的服务器上运行某个应用程序。 该应用程序在控制台会话上运行,基本上pipe理一些批处理。 每隔一段时间,我们发现应用程序没有运行,显然这只发生在客户抱怨应用程序的工作没有完成之后。 应用程序closures的原因从内部错误到故意closures到服务器重新启动。 如果是后者,我可以在事件查看器中看到证据。 在其他情况下,我正在寻找一种方法来发现应用程序closures时login的人员。

我觉得合理的是通过batch file运行应用程序,一旦应用程序closures,将遵循的批处理命令将列出当前login的用户,其中一个可能负责closures。 问题是每个人都使用networkingpipe理员凭证(!)login到服务器,而不同的会话只能通过用户的计算机名称分开。

值得一提的是:

  1. 该应用程序做了一个经典的服务工作,但它不能被转换为一个。
  2. 我尝试了一些Sysinternal工具,但没有列出我需要的信息。
  3. 我宁愿不使用事件查看器。 这是淹没的。 日志文件比较好。
  4. 我没有试图获得合法的证据,只是找出应用程序退出之前发生的事情。
  5. 我是程序员,而不是系统pipe理员。 请和我一起裸露…

更新 :所以也许

netstat -n -a | findstr 3389 

是你在找什么。

**更新之前:**我认为你正在寻找的是:

 query session query user 

但是,顶多是那些创可贴。 你应该退后一步,在更深的层面上解决这个问题。 也许看门狗服务或类似的东西。

您可以在Windows上使用net session命令来找出谁login(本地和远程)。 我目前没有一个窗口框,所以对不起,我不能给你整个命令,但net session help应该…..帮助你? 🙂

许多networking监控软件包可以让你监控一个单独的进程,并在你停止/重启时提醒你。

我们使用名为JFFNMS( http://www.jffnms.org/ )来监视QuarkXpress上几台发送给他们的作业的机器。 每当一个工作经常会使应用程序崩溃,当发生这种情况时,JFFNMS发送一封电子邮件告诉我们。

可能略有侧面思考,但在我们的几台TS服务器上,我们有一个login脚本,可以将各种信息写入服务器上的文件夹。 我们这样做的原因完全与你无关,但你可以很容易地做到这一点,以logging谁login。在TS会话中,环境variablesCLIENTNAME被设置为连接的工作站的名称,所以它可能是如下简单:

 date /t >>C:\somefolder\%CLIENTNAME%.log time /t >>C:\somefolder\%CLIENTNAME%.log echo %USERNAME% >>C:\somefolder\%CLIENTNAME%.log echo ---------- >>C:\somefolder\%CLIENTNAME%.log 

JR