如何防止“同一用户”使用命令提示符在终端服务器上打开相同的程序?

如何防止“同一用户”使用命令提示符在终端服务器上打开相同的程序?

我有几个用户使用远程桌面应用程序(Server 2008),当他们打开我创建的 .BAT 文件时,它会打开两个程序...但是,我需要防止同一个程序(在本例中是 Outlook)多次打开...

我在我的.BAT文件中创建了此行...

tasklist /nh /fi "imagename eq outlook.exe" | find /i "Outlook.exe" > nul ||(start /min Outlook.exe)

它运行正常...除了,我有多个用户登录到这个“终端服务器”并运行同一个 .BAT 文件...所以当“用户 2”登录时,他们没有启动 Outlook,因为它已经显示在“用户 1”下的任务管理器中正在运行...

我需要能够区分"imagename" and "username"……好吧,“用户名”将是%USERPROFILE%

答案1

如何防止“同一用户”使用命令提示符在终端服务器上打开相同的程序?

我有多个用户登录到此“终端服务器”并运行相同的 .BAT 文件...因此,当“用户 2”登录时,他们无法启动 Outlook,因为它已在任务管理器中的“用户 1”下显示为正在运行

尝试下面的逻辑,因为它将使用%Username%环境变量来获取TASKLIST运行该命令的用户帐户配置文件的用户名的当前条目。。。

任务列表命令仅供运行它的用户获取进程

TASKLIST /NH /FI "USERNAME eq %Username%" /FI "imagename eq outlook.exe"

使用示例逻辑

TASKLIST /NH /FI "USERNAME eq %Username%" /FI "imagename eq outlook.exe" | find /i "Outlook.exe" > nul ||(start /min Outlook.exe)

其他阅读材料和资源

相关内容