RDP-сервер из Winows 10 / Windows 7

Как и в прошлых клиентских версиях операционных систем Майкрософт, пользователи Pro и Enterprise Windows 10 (но не Home) редакций могут удаленно подключаться к своим компьютерам через службу удаленных рабочих столов (RDP). Однако есть ограничение на количество одновременных RDP сессии – возможна одновременная работа только одного удаленного пользователя. При попытке открыть вторую RDP сессию, сеанс первого пользователя предлагается завершить.

second-rdp-login

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

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

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

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

Мы рассмотрим два способа отключить ограничение на количество одновременных RDP подключений к Windows 10:

  • RDP Wrapper Library.
  • Модификация файла termsrv.dll.

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

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

RDP Wrapper Library

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

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

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

Скачать RDP Wrapper можно с репозитория GitHub: https://github.com/binarymaster/rdpwrap/releases (последняя доступная версия RDP Wrapper Library v1.6.2 вышла относительно недавно – 28 декабря 2017 года). Судя по информации на странице разработчика, поддерживаются все версии Windows. Windows 10 поддержиывается вплость до версии Insider Preview build 10.0.17063.1000 от 13 декабря 2017 года.

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

Архив 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

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

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

Примечание. В моем случае, т.к. на компьютере отсутствует доступ в интернет, программа не смогла получить с Github актуальную версию INI файла с настройками под мою версию Windows. Поэтому в статусе указано [not supported]. Скачайте файл rdpwrap.ini с ресурса разработки и поместите его в каталог установки. Перезапустите службу и убедитесь, что надпись [not supported] сменилась на [fully supported].

Из интересных особенностей новой версии RDP Wrapper:

  • опция Hide users on logon screen – позволяет скрыть список пользователей на экране приветствия.
  • При отключении опции Single session per user — будут разрешены несколько одновременных RDP сессий под одной учетной записью (устанавливается ключ реестра fSingleSessionPerUser = 0 в ветке HKLM\SYSTEM\ CurrentControlSet\Control\Terminal Server\fSingleSessionPerUser).

В том случае, если после обновления версии Windows, RDP Wrapper не работает, проверьте, что в секции Diagnostics присутствует надпись Listener state: Not listening.

Попробуйте обновить ini файл скриптом update.bat, либо вручную и переустановить службу

rdpwinst.exe -u
rdpwinst.exe -i

Пытаемся открыть вторую RDP сессию. Все получилось! Теперь наша Windows 10 позволяет одновременно подключаться по RDP сразу двум удаленным пользователям.

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

Модификация файла termsrv.dll

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

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

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

Перед правкой файла termsrv.dll нужно стать его владельцем и предоставить группе администраторов полные права на него (все операции выполняются аналогично описанным в статье Убираем ограничение на количество RDP сессий в Windows 8). Затем остановите службу Remote Desktop service (TermService) из консоли services.msc или из командной строки:

Net stop TermService

Для редакции Windows 10 x64 RTM (версия файла termsrv.dll — 10.0.10240.16384): Откройте файл termsrv.dll с помощью любого HEX редактора (к примеру, Tiny Hexer)

Найдите строку:

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

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

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

 

Источник: http://winitpro.ru/index.php/2015/09/02/neskolko-rdp-sessij-v-windows-10/

 

1 Comment

  1. Здравствуйте, мой комментарий несколько не в тему, но касается того как снять ограничение одновременных VPN соединений у стандартного microsoft’овского VPN сервиса.
    Расскажу только о том где и чего надо поправить:
    В разделе реестра «HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002BE10318}\0003»
    должны присутствовать имена «ComponentId» и «MatchingDeviceId» с содержимым в обоих «ms_pptpminiport»
    могут попадаться случаи в которых эти имена находятся под другим номером «ветки» (0001, 0002,…)
    далее нам следует исправить «WanEndpoints» на 128(десятичное) и «MaxWanEndpoints» на 1000(десятичное)
    после этого нам следует исправить rasppp.dll файл, что находится в папке «system32», для всех строк поиска значения чисел 75 и 74 меняются на B8
    Win7-x86 (6.1.7601.17514) — ищем по адресу 48D5 значения «75 07 83 0D» и по адресу 490E значения «74 07 83 0D»
    Win7-x64 (6.1.7601.17514) — ищем по адресу CC0F значения «75 07 83 0D» и по адресу CC48 значения «74 07 83 0D»
    Win10-x64 (10.0.18362.1) — ищем по адресу 40E2 значения «75 06 09 1D» и по адресу 411C значения «74 06 09 1D»
    вероятно и на других версиях будут те же искомые значения по другим адресам, но обязательно с примерно таким-же отдалением друг от друга

Leave a Reply

Your email address will not be published.


*