Я использую программу "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 );
}
Вернет ЛОЖЬ? (Не вопрос программирования! Просто пример того, как программы определяют, находятся ли они в сеансе сервера терминалов!)
источник
Ответы:
У приложения есть несколько способов проверить, работает ли оно в сеансе сервера терминалов. Некоторые из них вы можете взломать, как показано ниже:
HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server\TSAppCompat
.Этот ключ отсутствует в обычном сеансе на моем рабочем столе.
Вы можете попытаться удалить его, если можете.
Вы можете попробовать запустить игру из командной строки (cmd) после выполнения
SET SESSIONNAME=Console
(значение моего рабочего стола) илиSET SESSIONNAME=
(пусто).Чтобы узнать его текущее значение, введите,
SET SESSIONNAME
прежде чем что-либо менять.Вы не можете ничего сделать против этого, кроме написания системного хука для этого.
Если интересно, посмотрите эту статью на codeproject.com: выявлена перехват API .
источник
Я нашел решение: запуск нужных программ с помощью «runas»
После входа через рабочий стол введите это в cmd:
runas / user: YOUR_NAME "YOUR_PROGRAM_PATH"
Я проверил его на программном обеспечении Bently, и они работают хорошо.
источник
Я использую Microsoft Remote Desktop и попробовал первые 2 метода, опубликованные @harrymc, но они не работают в моем случае. Третий слишком сложен для меня, поэтому я не попробовал.
В конце концов я обнаружил, что параллельный доступ позволяет мне использовать программу, которая показала ошибку. Это не так гладко, как RDP, поэтому я использую его, если мне действительно нужно использовать программу.
источник
Непосредственно не отвечает на вопрос SoftXPand, но я попал сюда из-за поиска в Google, и он соответствует ответу @ harrymc.
Я создал пакетный файл с задержкой 60 секунд, а затем запускает приложение, которое хочу запустить. Я запустил пакетный файл, вышел из соединения RDP, подождал около 5 минут, а затем снова подключился к RDP. Раздражающее приложение, которое я хотел, ждало меня, когда я вернулся. Вот содержимое пакетного файла:
Кавычки вокруг пути необходимы, если в пути есть пробелы.
Получил информацию о пакете отсюда: /programming/8324352/creating-a-batch-file-for-programs-to-start-using-a-delay
реквизиты этому парню: https://stackoverflow.com/users/959263/raihan
(сказано предоставить детали и поделиться своими исследованиями)
источник