Может ли графический интерфейс сеанса RDP оставаться активным после отключения

Я запускаю автоматизированные процедуры тестирования, которые имитируют нажатия клавиш и щелчки мышью 24/7.

Хотя он работает нормально локально, в сеансе RDP он останавливается после того, как свернут или отключен. По-видимому, GUI не существует, если вы не можете физически увидеть его на экране.

В реестре есть обходной путь для поддержания активного графического интерфейса для минимизации окна, но я не знаю, как сохранить его после отключения.

В идеале, я бы запустил сеанс консоли сервера Windows, который не заботился бы о том, чтобы отключиться, но в размещенной среде (я пробовал Amazon и Go Daddy) нет доступа к сеансу консоли.

Кто-нибудь знает, как я могу обойти это? В основном любое решение, которое позволяет мне запускать мое приложение на VPS. Мне нужна надежность хозяина, но гибкость, чтобы управлять им, как если бы я сидел прямо перед собой.

5 ответов

Решение

Это может быть обходной путь, хотя я сам не пробовал, и это предполагает наличие другой машины

Давайте предположим, что в данный момент вы создаете сеанс на myserver.com

Локальный клиент ----> myserver.com

Вместо этого вы можете попробовать использовать отдельный сервер (назовем его myslave.com) и использовать его для установления сеанса.

Локальный клиент ----> myslave.com ----> myserver.com

Тогда если вы отключите Local Client ---> myslave.com сеанс GUI сеанса между myslave.com ----> myserver.com должен оставаться активным.

Это будет работать, только если вы подключены к сеансу консоли myslave.com.

Да, ты можешь.

В Windows существует два типа сеансов: сеанс "консоли", который всегда активен, и может быть только максимум один из сеансов "терминала", как RDP. Используя "rdpwrap" на Github, вы можете иметь неограниченное количество терминальных сессий.

Сеансы RDP становятся "деактивированными", когда к ним нет соединения. Программы по-прежнему будут работать, но все, что зависит от взаимодействия с графическим интерфейсом, будет плохо работать.

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

for /f "skip=1 tokens=3" %%s in ('query user %USERNAME%') do (tscon.exe %%s /dest:console)

Это отключит вас от сеанса, но все равно будет работать в полном графическом контексте. Это отвечает на ваш вопрос. Вы можете подключиться к нему, и он снова станет терминальным сеансом, и вы можете делать это бесконечно. И, конечно же, autohotkey работает отлично.

Но что, если вам нужно более одного постоянного сеанса с поддержкой графики?

Чтобы получить неограниченное количество графически-устойчивых сеансов, вы можете запустить удаленный рабочий стол и запустить терминальные сеансы из "основного" сеанса, описанного выше. Обычно удаленный рабочий стол предотвращает это "петлевое" поведение, но если вы укажете "127.0.0.2" для места назначения, вы сможете запустить терминальную сессию с любым количеством пользователей на удаленном компьютере.

Постоянство графики будет присутствовать на терминальных серверах только в том случае, если они не свернуты, если только вы не создадите и не установите для параметра RemoteDesktop_SuppressWhenMinimized значение 2 в следующем расположении реестра:

HKEY_LOCAL_MACHINE\Software\Microsoft\Terminal Server Client

Благодаря этому вы можете получать неограниченное количество полностью независимых графически устойчивых удаленных сеансов с одного компьютера.

Чтобы сделать это проще, я сделал небольшой набор командных файлов, которые делают все это за пару кликов.

Это может быть обходным путем, хотя я сам не пробовал, и это связано с> другой машиной

Предположим, что в данный момент вы создаете сеанс на myserver.com

Локальный клиент ----> myserver.com

Вместо этого вы можете попробовать создать отдельный сервер (назовем его myslave.com) и использовать его для установления сеанса.

Локальный клиент ----> myslave.com ----> myserver.com

Затем, если вы отключите сеанс локального клиента ---> myslave.com, графический интерфейс сеанса
между myslave.com ----> myserver.com должен оставаться активным

Если вы используете сервер Windows, вам даже не нужна другая машина.

1) Connect to the server with the remote desktop connection (#con1).

2) Create a new alias for your server system like "127.0.0.2" in Windows\System32\drivers\etc\hosts .

3) Now establish a new remote desktop connection from your windows server (in #con1) to itself (#con2).

4) Finally start your GUI needing application e.g. UI-Path in #con2 and then close #con1.

Я нашел похожий способ. У меня была такая же проблема, я скачал обёртку rdp, которая позволяет вам настроить сервер rpd с несколькими сессиями, и один включенный инструмент (rdpchecker.exe) позволяет вам подключаться к localhost, чтобы вы могли подключаться к вашему серверу с вашего сервера, и вам не нужен этот средний клиент,

Я столкнулся с той же проблемой и заметил, что использование VNC (TightVNC) для управления удаленной машиной, похоже, решает проблему. Я предполагаю, что VNC использует экран консоли. После активации и входа в систему он остается в системе даже после отключения VNC. Убедитесь, что экран никогда не выключается в параметрах питания. Обратите внимание, что держать консоль в системе на VPS, как правило, не рекомендуется.

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