Удаленный рабочий стол на Windows — очень удобная опция для тех, кто не хочет ограничивать себя стационарным рабочим местом. Однако у нее есть ограничение: пользователь может быть только один, физически перед компьютером или удаленно. В части случаев это может быть неудобно. Сегодня мы оставим без внимания актуальность и варианты использования удаленных рабочих столов, ведь, раз уж вы читаете эти строки, доказывать их полезность вам, скорее всего, не нужно вовсе. Вместо этого мы сосредоточимся на том, как обойти обозначенное выше ограничение и создать более одного подключения одновременно. Заметим, ограничение носит исключительно программный характер и фактически удаленных пользователей может быть столько, насколько хватит вычислительной мощности вашего ПК. Кроме прочего, это означает, что решаясь на все описанные ниже манипуляции вы нарушаете условия лицензионного соглашения и будете выполнять их на свой риск и страх. Что ж, это была минутка теории, а теперь пора переходить к практике, где мы разберем, как можно настроить одновременную работу нескольких RDP на Windows.
RDP Wrapper: разрешить несколько RDP сеансов в Windows
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). Утилита не развивается с 2022 года, но ее можно использовать на всех билдах Windows 10 и даже в Windows 11.
Архив 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, запустите файл install.bat с правами администратора.
После окончания установки запустите RDPConfig.exe. Проверьте, что в секции Diagnostics все элементы окрашены в зеленый цвет.
После окончания установки запустите RDPConfig.exe. Скорее всего сразу после установки утилита покажет, что RDP wrapper запущен (Installed, Running, Listening), но не работает. Обратите внимание на красную надпись. Она сообщает, что данная версий Windows 10 (ver. 10.0.19041.1320) не поддерживается ().
Дело в том, что под каждую версию Windows 10 должно быть описание в конфигурационном файле rdpwrap.ini. В вашем файле конфигурации просто нет настроек для вашего билда Windows 10.
Актуальную версию файла rdpwrap.ini можно скачать здесь https://raw.githubusercontent.com/sebaxakerhtc/rdpwrap.ini/master/rdpwrap.ini
Вручную скопируйте содержимое данной страницы в файл «C:\Program Files\RDP Wrapper\rdpwrap.ini». Или скачайте файл с помощью PowerShell командлета Invoke-WebRequest (предварительно нужно остановить службу Remote Desktop):
Stop-Service termservice -Force Invoke-WebRequest https://raw.githubusercontent.com/sebaxakerhtc/rdpwrap.ini/master/rdpwrap.ini -outfile «C:\Program Files\RDP Wrapper\rdpwrap.ini»
Перезагрузите компьютер, запустите утилиту RDPConfig.exe. Проверьте, что в секции Diagnostics все элементы окрашены в зеленый цвет, и появилось сообщение [Fully supported]. На скриншоте ниже показано, что RDP Wrapper с данным конфигом прекрасно работает и в Windows 11.
Осталось перезагрузить компьютер. Попробуйте подключиться к своим компьютерам несколькими RDP сессиями (воспользуйтесь любым RDP клиентом: mstsc.exe, rdcman и т.д.). Все получилось (можно даже использовать сохранённые RDP пароли)! Теперь ваша Windows 10 позволяет одновременно подключаться по RDP сразу двум (и более) удаленным пользователям.
Утилита RDPWrap поддерживается во редакциях Windows, таким образом из любой клиентской версии Windows можно сделать сервер терминалов.
Также из интересных возможностей RDP Wrapper можно выделить:
- Enable Remote Desktop — включить RDP доступ
- Опция Hide users onlogon screen позволяет скрыть список пользователей на экране приветствия;
- При отключении опции Single sessionper user — будут разрешены несколько одновременных RDP сессий под одной учетной записью (устанавливается параметр реестра fSingleSessionPerUser = 0 в ветке HKLM\SYSTEM\ CurrentControlSet\Control\Terminal Server\fSingleSessionPerUser).
- RDP Port — можно изменить номера порта удаленного рабочего стола со стандартного TCP 3389 на любой другой;
- В секции Session Shadowing Mode вы можете настроить режим теневого подключения к рабочему столу пользователей Windows 10.
Ограничения на длительность RDP сессий можно настроить через GPO.
Безопасность при использовании технологии RDP
Все соединения по RDP шифруются, тем не менее, не будет излишним проверить некоторые настройки безопасности. Большую часть настроек можно выполнить через редактор Gpedit
.
- Откройте его командой gpedit.msc и проследуйте по указанной на скриншоте цепочке настроек.
- Активируйте указанную на скриншоте политику, уровень безопасности выставьте «Согласование
» или «
SSL
».
Включите политику «Требовать безопасное RPC-подключение
».
Следующей активируйте указанную на скриншоте политику;
Перейдите по указанной на изображении цепочке настроек и включите справа политику «Системная криптография: использовать FIPS-совместимые алгоритмы…
».
Измените порт RDP в Windows 10 по умолчанию, для чего, открыв редактор реестра командой regedit , перейдите по указанной ветке и дважды кликните по параметру PortNumber. В окошке редактирования укажите свой произвольный порт, открыв его затем в брандмауэре.
Откройте командой secpol.msc политики безопасности, зайдите в раздел Локальные политики
→
Параметры безопасности
и убедитесь, что указанная на скриншоте настройка включена. Это — запрет устанавливать соединения с учетными записями без пароля.
Зайдите в дополнительные параметры штатного брандмауэра и в правилах для входящих подключений найдите элемент «Удаленный рабочий стол — пользовательский режим (трафик TCP)
». Кликните по ней два раза, переключитесь в окне свойств на вкладку «
Область
», активируйте радиокнопку «
Указанные IP адреса
», нажмите «
Добавить
». В открывшемся окошке укажите IP, с которого разрешено подключаться и сохраните настройки. Можно указать и диапазон IP адресов.
Приведенные здесь меры носят рекомендательный характер, но, если безопасность для вас в приоритете, есть смысл рассмотреть альтернативные способы удаленного управления, например, подключение к удаленному рабочему столу через VPN в связке с RDP, где вам не понадобится пробрасывать порты. Существует также такая технология как RDP Gateway — шлюзовой сервер, использующий RDP в связке с протоколом HTTPS. Данный способ подключения к удаленному рабочему столу в Windows 10 имеет ряд преимуществ, в частности, подключение к удаленным хостам через брандмауэры и совместное использование сети несколькими фоновыми приложениями.
Не работает RDP Wrapper в Windows 10
В некоторых случая утилита RDP Wrapper не работает как ожидается, и вы не можете использовать несколько RDP подключений.
Если утилита в окне статуса показывала [not supported], значит в файле rdpwrap.ini отсутствует конфигурация для вашей версии Windows. Обновите файл rdpwrap.ini как описано выше.
Если RDP Wrapper не работает после обновления файла rdpwrap.ini, попробуйте открыть файл rdpwrap.ini и найти в нем описание для вашей версии Windows. Как понять, есть ли поддержка вашей версии Windows в конфиг фафле rdpwrapper?
На скриншоте ниже показано, что для моей версии Windows 10 (10.0.19041.1320) есть две секции с описаниями:
[10.0.19041.1320] ….. [10.0.19041.1320-SLInit] …..
Если для вашей версии Windows нет секции в конфигурационном файле, попробуйте поискать в сети строки rdpwrap.ini для вашего билда. Добавьте найденные строки в самый конец файл.
Также при проблемах с RDPWrap вы можете открыть ветку в https://github.com/stascorp/rdpwrap/issues. Здесь же можно найти актуальные файлы rdpwrap.ini до момента обновления в официальном репозитории.
Если после установки обновлений безопасности или после апгрейда билда Windows 10, RDP Wrapper не работает, проверьте, возможно в секции Diagnostics присутствует надпись Listener state: Not listening.
Попробуйте обновить ini файл, и затем переустановить службу:
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.
В этом случае нужно с помощью редактора групповых политики gpedit.msc в секции Конфигурация компьютера –> Административные шаблоны -> Компоненты Windows -> Службы удаленных рабочих столов -> Узел сеансов удаленных рабочих столов -> Подключения включить политику “Ограничить количество подключений” и изменить ее значение на 999999 (Computer Configuration -> Administrative Templates -> Windows Components ->Remote Desktop Services ->Remote Desktop Session Host -> Connections-> Limit number of connections).
Перезагрузите компьютер для обновления GPO и применения настроек .
Как именно работают ограничения?
Первым делом уточним, что работают удаленные рабочие столы исключительно на версиях Windows Pro и выше, тогда как на домашней (Windows Home) эта опция не доступна в принципе. Также, как мы уже уточнили выше, подключение может быть только одно: либо локально на интересующем нас ПК, либо удаленно, две и более сессии пользователям недоступны. При попытке нового подключения, система выдаст предупреждение о том, что текущий пользователь будет отключен и запросит подтверждение для продолжения работы.
Модификация файла termsrv.dll для снятия ограничений RDP в Windows 10 и 11
Чтобы убрать ограничение на количество RDP подключений пользователей в Windows 10 без использования rdpwraper, можно заменить файл termsrv.dll. Это файл библиотеки, которая используется службой Remote Desktop Services. Файл находится в каталоге C:\Windows\System32.
Прежде, чем править или заменять файл termsrv.dll желательно создать его резервную копию. Это поможет вам в случае необходимости можно будет вернуться к исходной версии файла. Запустите командную строку с правами администратора и выполните команду:
copy c:\Windows\System32\termsrv.dll termsrv.dll_backup
Затем нужно стать владельцем файла. Проще всего это сделать из командной строки. Чтобы сменить владельца файла с 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».
Теперь с помощью icacls.exe предоставьте группе локальных администраторов полные права на файл 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«.
Теперь нужно остановить службу Remote Desktop Service (TermService) из консоли services.msc или из командной строки:
Net stop TermService
Вместе с ней останавливается служба Remote Desktop Services UserMode Port Redirector.
Прежде чем идти дальше, вам нужно узнать вашу версию (билд) Windows 10. Проще всего это сделать с помощью следующей команды PowerShell:
Get-ComputerInfo | select WindowsProductName, WindowsVersion
В моем случае установлена Windows 10 билд 21H1.
Затем откройте файл termsrv.dll с помощью любого HEX редактора (к примеру, Tiny Hexer). В зависимости от билда нужно найти и заменить строку:
Версия Windows | Найти строку | Заменить на |
Windows 11 RTM ( 21H2 22000.258) | 39 81 3C 06 00 00 0F 84 4F 68 01 00 | B8 00 01 00 00 89 81 38 06 00 00 90 |
Windows 10 x64 21H2 | 39 81 3C 06 00 00 0F 84 DB 61 01 00 | |
Windows 10 x64 21H1 | 39 81 3C 06 00 00 0F 84 2B 5F 01 00 | |
Windows 10 x64 20H2 | 39 81 3C 06 00 00 0F 84 21 68 01 00 | |
Windows 10 x64 2004 | 39 81 3C 06 00 00 0F 84 D9 51 01 00 | |
Windows 10 x64 1909 | 39 81 3C 06 00 00 0F 84 5D 61 01 00 | |
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 |
Редактор Tiny Hexer не может редактировать файл termsvr.dll напрямую из папки system32. Скопируйте его на рабочий стол, а после модификации замените исходный файл.
Например, для самой редакции Windows 10 x64 21H1 19043.1320 (версия файла termsrv.dll — 10.0.19041.1320) нужно открыть файл termsrv.dll в Tiny Hexer. Затем найдите строку:
39 81 3C 06 00 00 0F 84 2B 5F 01 00
И замените ее на:
B8 00 01 00 00 89 81 38 06 00 00 90
Сохраните файл и запустите службу TermService. Если что-то пошло не так, и у вас возникнут проблемы со службой RDP, остановите службу и замените модифицированный файл termsrv.dll исходной версией:
copy termsrv.dll_backup c:\Windows\System32\termsrv.dll
Введение
Ранее я описывал способ, как сделать терминальный сервер из Windows 7. Сейчас актуальна современная операционная система Windows 10. В связи с тем, что поддержка Windows 7 уже закончена, всем так или иначе со временем придется работать в Windows 10, даже если предыдущая версия вас полностью устраивает.
Полезная возможность сделать из обычной Window 10 терминальный сервер. Ранее я не один раз использовал эту функцию для работы в файловой 1С нескольких человек одновременно. Для небольшого коллектива из нескольких сотрудников это вполне удобно и оправданно, так как покупать полноценный сервер и серверную ОС для таких задач нецелесообразно.
Сразу сделаю важное замечание. Я не рекомендую использовать сервер терминалов на основе windows 10 там, где критично, чтобы все работало стабильно и простой недопустим. Часто после обновлений слетает настроенный функционал и восстановить его работу не всегда получится быстро. Имейте это ввиду.
Одновременный доступ по RDP под одной учетной записью
Как и в прошлых клиентских версиях операционных систем Майкрософт, пользователи Pro и Enterprise Windows 10 (но не Home) редакций могут удаленно подключаться к своим компьютерам через службу удаленных рабочих столов (RDP). Однако есть ограничение на количество одновременных RDP сессии – возможна одновременная работа только одного удаленного пользователя. При попытке открыть вторую RDP сессию, сеанс первого пользователя предлагается завершить.
В английской версии предупреждение такое:
Дело в том, что в настольных редакциях операционных систем Microsoft есть следующие основные ограничения на использование службы удаленного рабочего стола:
- Поддержка RDP доступа имеется только в старших редакциях Windows (Professional и выше), а в домашних редакциях (Home) этот функционал отключен.
- Возможно только одно удаленного RDP подключения. При попытке открыть вторую RDP-сессию, пользователю предлагается завершить существующее подключение.
- В том случае, есть пользователь работает за консолью компьютера (локально), при удаленном подключении 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 со всеми вытекающими последствиями.