【问题标题】:RDP kill a program specificallyRDP专门杀死一个程序
【发布时间】:2014-02-03 22:48:56
【问题描述】:

我知道您可以使用 tskill 来杀死批处理文件中的进程等等,但是...我有用户将远程桌面放入 Windows Server 2003 框以运行 Microsoft Access 程序。有时,如果 Access Program 中的某个 RDP 已经打开(意味着他们已进入其他人的会话)。这意味着他们正在使用其他人的 Access 登录,而我有某些表格可以记录该信息并使用它来自动发送电子邮件提醒人们。由于每个人都只在服务器上使用同一个程序,所以我所有的 rdp 登录都是同一个用户。当我试图为 msaccess.exe 做一个 tskill 批处理程序时,它杀死了所有登录的人的访问权限--doh!我看不到让每个人在 rdp 登录时都登录,所以我希望答案不是让企业中的每个人都登录,然后到他们的计算机上更改他们保存的 rdp 登录信息。有没有办法只为当前会话运行类似 tskill 的东西?我使用的批处理命令是 taskkill /f /im msaccess.exe 。提前感谢您的宝贵时间和回复。

【问题讨论】:

  • 嗨,您可能会发现最好在超级用户或服务器故障站点上询问这个问题 - 这不是真正的编程。
  • 查看该服务器上的任务管理器或进程资源管理器,并报告是否有多个 msaccess.exe 实例,每个用户一个。如果是这样,也许我们可以通过 WMIC + $PID 启动特定用户,而不会影响其他会话。还是盒子有powershell让这一切变得更容易。
  • 没有。如果只有一个访问正在运行,那么您将杀死它。也许这个 c:\Windows\System32>tsdiscon /?断开终端会话。 TSDISCON [会话ID | sessionname] [/SERVER:servername] [/V] sessionid 会话的 ID。 sessionname 会话的名称。 /SERVER:servername 指定终端服务器(默认为当前)。 /V 显示有关所执行操作的信息。

标签: windows batch-file rdp


【解决方案1】:

我相信这个脚本可以解决问题。

:: Find the current session.
FOR /F "tokens=3 delims= " %%F IN ('query session %USERNAME%') DO SET SESSIONID=%%F
:: Kill all msaccess processes *in this specific session*.
taskkill /FI "SESSION eq %SESSIONID%" /IM msaccess.exe /F

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-05-18
    • 2017-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多