Windows: Как заставить программы думать, что они не работают в сеансе сервера терминалов?

Я использую программу "SoftXPand 2011 Duo" от Miniframe на моем ПК с Windows 7. Это делает две рабочие станции из одного компьютера. Он использует терминальные сервисы, встроенные в Windows, для создания дополнительного сеанса. Я использую два экрана, две клавиатуры и две мыши, чтобы создать эту "иллюзию" двух компьютеров. Он работает довольно хорошо, и я даже могу играть в две разные 3D-игры на двух экранах, подключенных к этой машине (используя Radeon HD5770 и Core i5 2500k с 8 Гбайт ОЗУ).

Есть несколько минусов в этом. Я только что нашел один, который спрятан на первый взгляд. Сеансы, в которых вы находитесь (даже на первой рабочей станции), будут идентифицироваться как сеанс сервера терминалов! Теперь некоторые программы будут работать с ограниченными эффектами (графическими), а некоторые вообще не будут работать.

Это также привело к тому, что некоторые игры вообще не запускались. Они просто говорят "Невозможно запустить в сеансе сервера терминалов" и завершают работу. Я уже доказал, что лучшие современные игры (DirectX 10, 11) работают так же хорошо, как и на той же машине без SoftXPand, так что это довольно искусственное ограничение!

Итак, могу ли я каким-то образом взломать мой текущий сеанс, чтобы он больше не выглядел как сеанс сервера терминалов? IE

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

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

Вернет ЛОЖЬ? (Не вопрос программирования! Просто пример того, как программы обнаруживают, находятся ли они в сеансе сервера терминалов!)

5 ответов

Решение

Это Miniframe, разработчики SoftXpand Duo. Мы рекомендуем заглянуть в нашу Базу знаний за рекомендациями по устранению ошибки при запуске SoftXpand Duo в сеансе сервера терминалов:

Как устранить ошибку "Не удается запустить в сеансе сервера терминалов"

Существует несколько способов проверить, работает ли приложение в сеансе сервера терминалов. Некоторые из них вы можете взломать, как показано ниже:

  1. Реестр: HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server\TSAppCompat,
    Этот ключ отсутствует в обычном сеансе на моем рабочем столе.
    Вы можете попытаться удалить его, если можете.
  2. Значения переменных среды SESSIONNAME: Консоль / "RDP#" / (пусто).
    Вы можете попытаться запустить игру из командной строки (cmd) после выполнения
    SET SESSIONNAME=Console (ценность моего рабочего стола) или SET SESSIONNAME= (Пусто).
    Чтобы узнать его текущее значение, введите SET SESSIONNAME прежде чем что-то менять.
  3. Системные вызовы GetSystemMetrics(SM_REMOTESESSION) и GetVersionEx ( OSVERSIONINFOEX.wSuiteMask) возвращают контекст выполнения.
    Вы не можете ничего сделать против этого, кроме написания системного хука для этого.
    Если интересно, посмотрите эту статью на codeproject.com: выявлена ​​перехват API.

Я использую Microsoft Remote Desktop и попробовал первые 2 метода, опубликованные @harrymc, но они не работают в моем случае. Третий слишком сложен для меня, поэтому я не попробовал.

В конце концов я обнаружил, что Parallel Access позволяет мне использовать программу, которая показала ошибку. Это не так гладко, как RDP, поэтому я использую его, если мне действительно нужно использовать программу.

Я нашел решение: запуск нужных вам программ с помощью "runas"

После входа через рабочий стол введите это в cmd:

runas / user: YOUR_NAME "YOUR_PROGRAM_PATH"

Я проверил это на программном обеспечении Bently, и они работают хорошо.

Не касается вопроса SoftXPand напрямую, но я оказался здесь из-за поиска в Google, и это соответствует ответу @harrymc.

Я создал пакетный файл с задержкой 60 секунд, а затем запускаю приложение, которое хочу запустить. Я запустил командный файл, вышел из RDP-соединения, подождал около 5 минут, а затем снова подключился по RDP. Надоедливое приложение, которое я хотел, ждало меня, когда я снова включился. Вот содержимое пакетного файла:

      timeout 60

start /D "your path here" yourExecutable.exe

Кавычки вокруг пути необходимы, если в пути есть пробелы.

Получил информацию о пакете отсюда: https://stackoverflow.com/questions/8324352/creating-a-batch-file-for-programs-to-start-using-a-delay

реквизит этому парню: rschmidt13

(в нем сказано предоставить подробную информацию и поделиться моими исследованиями)

Другие вопросы по тегам