Создание нескольких сеансов RDP для одного пользователя

Удаленные пользователи могут подключаться к своим компьютерам Windows 10 через службу удаленных рабочих столов (RDP) в редакциях Pro и Enterprise (но не в Home/Single Language). Но есть ограничение на количество одновременных RDP сессии – допускается одновременная работа только одного удаленного пользователя. Если вы попробуете открыть вторую RDP сессию, появится предупреждение с запросом отключить сеанс первого пользователя.

 

 

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

 

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

В английской версии предупреждение такое:

Another user is signed in. If you continue, they’ll be disconnected. Do you want to sign in anyway?

Рассмотрим основные ограничения на использование службы удаленного рабочего стола в Windows 10 (и всех предыдущих десктопных версиях Windows):

  1. Вы можете удаленно подключиться через RDP только к старшим редакциям Windows (Professional и выше). В домашних редакциях (Home) RDP доступ заблокирован.
  2. Поддерживается только одно одновременное RDP подключение. При попытке запустить вторую RDP-сессию, пользователю предлагается завершить существующее подключение.
  3. Если пользователь работает за консолью компьютера (локально), то при удаленном подключении по RDP, его локальный сеанс будет отключен (заблокирован). Правильно и обратное утверждение: удаленный RDP сеанс принудительно завершается, если пользователь авторизуется на консоли системы.

Ограничение на количество одновременных RDP подключений является не техническим, а скорее лицензионным. Таким образом Microsoft запрещает создавать терминальный RDP сервер на базе рабочей станции для одновременной работы нескольких пользователей. Логика Microsoft проста: если вам нужен терминальный сервер — купите лицензию Windows Serverлицензии RDS CAL, установите и настройте роль Remote Desktop Session Host (RDSH).

Хотя с технической точки зрения любая редакция Windows при наличии достаточного количества оперативной памяти может обслуживать одновременную работу нескольких десятков удаленных пользователей. В среднем на одну RDP сессию пользователя без учета запускаемых приложений требуется 150-200 Мб памяти. Т.е. максимальное количество одновременных RDP сессий в теории ограничивается только ресурсами компьютера.

Мы рассмотрим два способа отключить ограничение на количество одновременных RDP подключений к Windows 10: с помощью приложения RDP Wrapper и с помощью правки файла termsrv.dll.

 

 

Важно. Изначально в самой первой версии статьи основным рабочим вариантом, позволяющим снять ограничение на количество одновременных RDP подключений пользователей в Windows был способ модификации и подмены файла termsrv.dll в папке %SystemRoot%\System32. Однако при установке нового билда Windows 10 или некоторых обновлений безопасности, этот файл обновляется.

В результате приходится каждый раз редактировать этот файл Hex редактором, что довольно утомительно. Поэтому в качестве основного способа организации бесплатного терминального сервера на клиентской Windows 10 стоит считать утилиту RDP Wrapper Library.

 

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

RDP Wrapper: разрешить несколько RDP сеансов в Windows 10

OpenSource проект RDP Wrapper Library позволяет включить конкурентные RDP сессии в Windows 10 без замены файла termsrv.dll. Эта программа работает в качестве прослойки между менеджером управления службами (SCM — Service Control Manager) и службой терминалов (Remote Desktop Services). RDPWrap позволяет включить не только поддержку нескольких одновременных RDP сессии, но и реализовать RDP сервер на домашних редакциях Windows 10. RDP Wrapper не вносит никаких изменений в файл termsrv.dll, просто подгружая termsrv с изменёнными параметрами.

Таким образом, RDPWrap будет работать даже при обновлении версии файла termsrv.dll, что позволяет не опасаться обновлений Windows.

Важно. Перед установкой RDP Wrapper важно убедится, чтобы у вас использовалась оригинальная (непропатченная) версия файл termsrv.dll. В противном случае RDP Wrapper может работать не стабильно, или вообще не запускаться.

Вы можете скачать RDP Wrapper из репозитория GitHub: https://github.com/binarymaster/rdpwrap/releases (последняя доступная версия RDP Wrapper Library v1.6.2). Судя по информации на странице разработчика, поддерживаются все версии Windows. Windows 10 поддерживается вплоть до 1809 (хотя в 1909 тоже все прекрасно работает, см. ниже).

Архив RDPWrap-v1.6.2.zip содержит несколько файлов:

  • RDPWinst.exe —программа установки/удаления RDP Wrapper Library;
  • RDPConf.exe — утилита настройки RDP Wrapper;
  • RDPCheck.exe — Local RDP Checker — утилита проверки RDP;
  • install.bat, uninstall.bat, update.bat — пакетные файлы для установки, удаления и обновления RDP Wrapper.

 

Архив RDPWrap-v1.6.2.zip

 

Чтобы установить RDPWrap, запустите файл install.bat с правами администратора.

 

Установка rdpwrapper в windows 10

 

После окончания установки запустите RDPConfig.exe. Проверьте, что в секции Diagnostics все элементы окрашены в зеленый цвет.

 

RDPConfig поддержка последних версий windows 10

 

Запустите RDPCheck.exe и попробуйте открыть вторую RDP сессию (или подключитесь несколькими сессиями RDP с удаленных компьютеров) Все получилось! Теперь ваша Windows 10 позволяет одновременно подключаться по RDP сразу двум удаленным пользователям.

 

Поддержка нескольких RDP сесиий в Windows 10

 

Утилита RDPWrap поддерживается во редакциях Windows: Windows Vista, Windows 7, Windows 8, Windows 8.1 и Windows 10. Таким образом из любой клиентской версии Windows можно сделать сервер терминалов.

Также из интересных возможностей RDP Wrapper можно выделить:

  • Опция Hide users on logon screen позволяет скрыть список пользователей на экране приветствия;
  • При отключении опции Single session per user — будут разрешены несколько одновременных RDP сессий под одной учетной записью (устанавливается параметр реестра fSingleSessionPerUser = 0 в ветке HKLM\SYSTEM\ CurrentControlSet\Control\Terminal Server\fSingleSessionPerUser).
  • RDP Port — можно изменить номера порта удаленного рабочего стола со стандартного TCP 3389 на любой другой;
  • В секции Session Shadowing Mode вы можете выбрать режим теневого подключения к рабочему столу пользователей Windows 10.

Не работает RDP Wrapper в Windows 10

Рассмотрим, что делать, если у вас в Windows 10 при установленной утилите RDP Wrapper не получается использовать несколько RDP подключений..

В моем случае утилита RDConfig в окне статуса показывала [not supported]. Проблема была в том, что на компьютере отсутствовал прямой доступ в Интернет и программа не смогла скачать с GitHub актуальную версию файла rdpwrap.ini с настройками для последних версий Windows (как вручную обновить rdpwrap.ini см. ниже).

Скачайте файл rdpwrap.ini с ресурса разработчика и поместите его в каталог установки (C:\Program Files\RDP Wrapper\rdpwrap.ini). Перезапустите службу TermService и убедитесь, что надпись [not supported] сменилась на [fully supported].

 

RDPConfig - диагностика

 

 

Чтобы заменить файл rdpwrap.ini:

  1. Остановите службу termservice: get-service termservice|stop-service
  2. Замените файл rdpwrap.ini в каталоге C:\Program Files\RDP Wrapper\;
  3. Перезагрузите компьютер;
  4. После перезагрузки запустите RDPConf и убедитесь, что все статусы стали зелеными.

 

ручное обновление конфигурационного файла rdpwrap.ini в windows 10

 

Если после установки обновлений безопасности или после апгрейда билда Windows 10, RDP Wrapper не работает, проверьте, возможно в секции Diagnostics присутствует надпись Listener state: Not listening.

 

Listener state: Not listening

 

Попробуйте обновить ini файл «C:\Program Files\RDP Wrapper\rdpwrap.ini» скриптом update.bat (либо вручную) и переустановить службу:

rdpwinst.exe -u
rdpwinst.exe -i

Бывает, что при попытке второго RDP подключения под другим пользователем у вас появляется надпись:

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

 

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

 

The number of connections to this computer is limited and all connections are in use right now. Try connecting later or contact your system administrator.

 

The number of connections to this computer is limited and all connections are in use right now.

 

В этом случае нужно с помощью редактора групповых политики gpedit.msc в секции Конфигурация компьютера –> Административные шаблоны ->  Компоненты Windows -> Службы удаленных рабочих столов -> Узел сеансов удаленных рабочих столов ->  Подключения включить политику “Ограничить количество подключений” и изменить ее значение на 999999 (Computer Configuration -> Administrative Templates -> Windows Components ->Remote Desktop Services ->Remote Desktop Session Host -> Connections-> Limit number of connections).

 

групповая политика Ограничить количество rdp подключений

 

Перезагрузите компьютер для применения настроек.

Модификация файла termsrv.dll  для снятия ограничений RDP в Windows 10

Чтобы убрать ограничение на количество RDP подключений пользователей в Windows 10 без использования rdpwraper, можно заменить файл termsrv.dll. Это файл библиотеки, которая используется службой Remote Desktop Services. Файл находится в каталоге C:\Windows\System32.

Прежде, чем править или заменять файл termsrv.dll желательно создать его резервную копию. Это поможет вам в случае необходимости можно будет вернуться к исходной версии файла. Запустите командную строку с правами администратора и выполните команду:

copy c:\Windows\System32\termsrv.dll termsrv.dll_backup

 

создать резевную копию файла termsrv.dll

 

Прежде чем править файл termsrv.dll, вам нужно стать его владельцем и предоставить группе администраторов полные права на него. Проще всего это сделать из командной строки. Чтобы сменить владельца файла с TrustedInstaller на группу локальных администраторов с помощью команды:

takeown /F c:\Windows\System32\termsrv.dll /A

Должно появится сообщение: «SUCCESS: The file (or folder): «c:\Windows\System32\termsrv.dll» now owned by the administrators group».

Теперь предоставим группе локальных администраторов полные права на файл termsrv.dll (Full Control):

icacls c:\Windows\System32\termsrv.dll /grant Administrators:F (или Администраторы в русской версии Windows). Должно появится сообщение: «processed file: c:\Windows\System32\termsrv.dll Successfully processed 1 files; Failed processing 0 files«.

 

termsrv.dll стать владельцем файла termsrv.dll с помощью takeown

 

Теперь нужно остановить службу Remote Desktop Service (TermService) из консоли services.msc или из командной строки:

Net stop TermService

 

Служба Remote Desktop service

 

Прежде чем идти дальше, вам нужно узнать вашу версию (билд) Windows 10. Проще всего это сделать с помощью следующей команды PowerShell:

Get-ComputerInfo | select WindowsProductName, WindowsVersion

В моем случае установлена Windows 10 билд 1909.

Затем откройте файл termsrv.dll с помощью любого HEX редактора (к примеру, Tiny Hexer). В зависимости от билда нужно найти и заменить строку:

 

Версия Windows 10 Найти строку Заменить на
Windows 10 x64 1909 39 81 3C 06 00 00 0F 84 5D 61 01 00  

 

 

 

B8 00 01 00 00 89 81 38 06 00 00 90

 

Windows 10 x64 1903 39 81 3C 06 00 00 0F 84 5D 61 01 00
Windows 10 x64 1809 39 81 3C 06 00 00 0F 84 3B 2B 01 00

 

Windows 10 x64 1803 8B 99 3C 06 00 00 8B B9 38 06 00 00

 

Windows 10 x64 1709 39 81 3C 06 00 00 0F 84 B1 7D 02 00

 

 

Например, для самой первой редакции Windows 10 x64 RTM 10240 (версия файла termsrv.dll — 10.0.10240.16384) нужно открыть файл termsrv.dll в Tiny Hexer. Затем найдите строку:

39 81 3C 06 00 00 0F 84 73 42 02 00

И замените ее на:

B8 00 01 00 00 89 81 38 06 00 00 90

 

hex редактор

 

Сохраните файл и запустите службу TermService.

Готовый пропатченный файл termsrv.dll для Windows 10 Pro RTM x64 можно скачать здесь: termsrv_windows_10_x64_10240.zip

Если что-то пошло не так, и у вас возникнут проблемы со службой RDP, остановите службу и замените модифицированный файл termsrv.dll исходной версией:

copy termsrv.dll_backup c:\Windows\System32\termsrv.dll

Преимущество способа включения нескольких RDP сессий в Windows 10 путем замены файла termsrv.dll в том, что на него не реагируют антивирусы. В отличии от утилиты RDPWrap, которую многие антивирусов считают Malware/HackTool/Trojan. Основной недостаток — вам придется вручную править файл при каждом обновлении билда Windows 10 (или при обновлении версии файла termsrv.dll в рамках ежемесячных кумулятивных обновлений).

  • 0 Пользователи нашли это полезным

Помог ли вам данный ответ?