寻找不允许多个会话的程序的建议

寻找不允许多个会话的程序的建议

我们正在运行带有远程桌面服务的 Windows Server 2012 R2 计算机。这样一来,每个人都可以登录并运行需要大量配置的公司软件,这样我们只需配置一次,然后将设置委托给该 PC 上的每个人。

我们也部署了 RemoteApps,它适用于大多数程序。

然而,有一个特定的程序,Lutron RadioRA,在这种环境下无法工作。如果计算机上的任何人打开它,而另一个用户试图在自己的 RDP 会话中打开它,它会抱怨该程序已在运行,无法启动。

我的第一个想法是尝试 Sandboxie,因为我知道它就是为此设计的。但它根本不起作用…….NET 立即崩溃,我收到大量“文件太大,不适合沙盒”错误和各种其他崩溃,直到我强制关闭 Sandboxie。

我的下一个想法是尝试“runas”,因为它是 Windows 内置的。我创建了一个名为 runastest 的用户,并设置了一个简单的密码,然后尝试启动指向该程序的 EXE 文件的 runas。输入密码后,它按预期启动。切换到另一个用户,使用同一个 runastest 用户执行了同样的操作……同样的错误,提示它已在运行。

我真的不知道还能尝试什么。我们需要一种方法来启动程序,而无需检查计算机上正在运行的其他程序 - 因为我无法想象为什么同时打开多个副本实际上会带来问题。无论如何,所有内容都存储在活动用户的会话中,AppData 等等。

答案1

该程序旨在作为单个实例运行。

在 Windows 开发中,它被称为“全局互斥”。我不知道如何绕过它。即使可以,这也是一个坏主意。因为程序是在考虑单实例的情况下开发的,绕过它会导致软件行为不可预测。

恕我直言,您应该在远程主机上安装 VNC 服务器,并共享实例,这样每个人都可以访问同一个桌面实例,从而可以同时使用该软件。没错!与此同时,这意味着人们将开始争相移动鼠标。

编辑:

经过一些研究我发现了Lync 解决方案。也许这对你有用。它使用 ThinApp 的“IsolatedSynchronizationObjects”选项,这将确保“全局互斥”将被隔离。在同一个链接中,它展示了如何使用进程探索器

相关内容