Windows:如何让程序认为它们没有在终端服务器会话中运行?


10

我在Windows 7 PC上使用Miniframe的程序“SoftXPand 2011 Duo”。它从一台计算机中生成两个工作站。它使用Windows内置的终端服务来创建附加会话。我使用两个屏幕,两个键盘和两个鼠标来创建两台计算机的“错觉”。它工作得很好,我甚至可以在连接到这台机器的两个屏幕上玩两个不同的3D游戏(使用Radeon HD5770和Core i5 2500k和8 GB RAM)。

这有一些缺点。我刚刚发现了一个隐藏在第一眼看上去的东西。您所在的会话(即使在第一个工作站上)将标识为终端服务器会话!现在有些程序运行的效果有限(图形化),有些程序根本无法运行。

这也导致一些游戏根本没有运行。他们只是说“无法在终端服务器会话中运行”并退出。我已经证明顶级现代游戏(DirectX 10,11)运行与没有SoftXPand的同一台机器一样好,所以这是一个非常人为的限制!

那么,我可以以某种方式破解我当前的会话,因此它看起来不再像终端服务器会话了吗? I. E.

#include <windows.h>
#pragma comment(lib, "user32.lib")

BOOL IsRemoteSession(void)
{
   return GetSystemMetrics( SM_REMOTESESSION );
}

会返回FALSE吗? (不是一个编程问题!只是程序如何检测它们是否在终端服务器会话中的示例!)


你有两个键盘/屏幕吗?请详细说明您的设置。
harrymc

@harrymc是的,我知道。编辑。
sinni800

即使您使用控制台会话,应用拒绝在终端服务器上运行的原因也是由于许可原因 - 因此一个许可证不能同时由多个人使用。
paradroid

Answers:


5

这是SoftFpand Duo的开发者Miniframe。我们建议查看我们的知识库,了解如何在终端服务器会话中运行SoftXpand Duo来解决错误:

如何解决错误“无法在终端服务器会话中运行”


该链接不起作用 - miniframe.com/component/kb/article/... 但是这个有用!我可以使用分号(;)输入多个程序吗?此外,在这里,您在SuperUser上获得了第125个声望! :)我也发了一封关于这个问题的电子邮件,我是 *是| E ot.de
sinni800

该链接也不起作用
bradgonesurfing

7

应用程序有多种方法可以检查它是否在终端服务器会话中运行。其中一些你可能会破解,如下所示:

  1. 登记处: HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server\TSAppCompat
    这把钥匙 在我的桌面上的正常会话中丢失。
    如果可以,您可以尝试删除它。
  2. SESSIONNAME环境变量值:Console /“RDP#”/(空)。
    您可以尝试在执行后从命令提示符(cmd)运行游戏
    SET SESSIONNAME=Console (我的桌面值)或 SET SESSIONNAME= (空)。
    要查找其当前值,请输入 SET SESSIONNAME 在改变之前。
  3. 系统调用 GetSystemMetrics的(SM_REMOTESESSION) GetVersionEx OSVERSIONINFOEX.wSuiteMask )返回执行上下文。
    除了为它编写系统挂钩之外,你不能对这个做多少。
    有兴趣的话请看这个codeproject.com文章: API挂钩透露

在2),会话名称是“控制台”(哎呀?)。这里也缺少关键的TSAppCompat。关于第三个......看起来很难。是不是有一个程序位于另一个程序的顶部并拦截系统调用,就像我提到的那样? GetSystemMetrics的。
sinni800

根据您的信息,可能第三种方法是值得攻击GetVersionEx和GetSystemMetrics的方法。我在上面添加了一个链接(供程序员使用)。
harrymc

另一个注意事项:如果有办法使用 MSTSC / admin 在SoftXPand中,这值得一试。
harrymc

@harrymc为什么选择MSTSC / admin?我将调查api挂钩...虽然我的编程能力可能太复杂了。
sinni800

“MSTSC / admin”是一个相当长的镜头:它是一个有点不同的远程会话类型,所以也许某些程序可能无法检测到它。
harrymc

0

我找到了一个解决方案:通过“runas”运行你想要的程序

通过桌面登录后,在cmd中键入:

runas / user:YOUR_NAME“YOUR_PROGRAM_PATH”

我对Bently的软件进行了测试,它们运行良好。


这绕过了终端服务器的问题?有意思,我得试试。
sinni800

不适用于质量效应3(此程序无法远程运行)
Mgamerz

0

我正在使用Microsoft远程桌面,我已经尝试了@harrymc发布的前两种方法,但它们在我的情况下不起作用。 第三个对我来说太复杂了,所以我没试过。

最后,我发现Parallel Access使我能够使用显示错误的程序。它不像RDP那么流畅,所以如果我真的必须使用该程序,我会使用它。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.