Содержание
- Способ 1: Замена файла конфигурации
- Способ 2: Настройка в «Редакторе групповых политик»
- Не работает RDP в целом
- Вопросы и ответы
Подключение по протоколу RDP в Виндовс 10 активно используется как некоторыми рядовыми пользователями, так и профессионалами. Для обхода системного ограничения последние использует программу RDP Wrap. Увы, но после обновлений системы этот софт перестаёт работать, и сегодня мы поможем вам решить эту проблему.
Способ 1: Замена файла конфигурации
Проблемы с работой рассматриваемой программы возникают вследствие обновлений системной библиотеки termsrv.dll. Под каждую её версию RDP Wrap нужно конфигурировать заново. К счастью, разработчики приложения заботятся об этом сами и после каждого мажорного апдейта выпускают новый конфигурационный файл. Алгоритм его замены выглядит следующим образом:
- Перейдите по ссылке в репозиторий приложения на GitHub.
Репозиторий на GitHub
- Откройте каталог res двойным щелчком левой кнопки мыши. Найдите внутри ссылку с именем rdpwrap.ini и кликните по ней правой кнопкой мыши. Выберите пункт «Сохранить ссылку как…» (в других браузерах – «Сохранить объект как…» или похожее по смыслу).
Сохраните файл rdpwrap.ini в любое подходящее место на компьютере.
- Теперь откройте утилиту «Выполнить» сочетанием Win+R, введите в неё запрос
services.msc
и нажмите «ОК».
После запуска списка служб найдите запись «Службы удалённых рабочих столов», выделите её и нажмите «Остановить службу».
Подтвердите остановку.
- Далее откройте «Проводник» и перейдите по следующему адресу:
C:Program FilesRDP Wrapper
Скопируйте полученный ранее rdpwrap.ini и вставьте в эту папку.
Подтвердите замену файла.
- Перезагрузите компьютер, после чего откройте монитор враппера с именем RDConfig.
Проверьте строку «Listener» – если надпись в ней гласит «Fully supported», проблема устранена.
Данный метод является предпочтительным, и к следующему следует прибегать только в случае отсутствия его эффективности.
Способ 2: Настройка в «Редакторе групповых политик»
Пользователи Windows 10 редакций Профессиональная и Корпоративная могут решить рассматриваемую проблему настройкой определённого параметра в «Редакторе групповых политик».
- Вызовите средство «Выполнить» (шаг 3 Способа 1), в котором введите запрос gpedit.msc.
- Перейдите по следующему пути:
Конфигурация компьютера/Административные шаблоны/Компоненты Windows/Службы удаленных рабочих столов/Узел сеансов удаленных рабочих столов/Подключения
- Дважды кликните по политике «Ограничить количество подключений».
Установите положение «Включено», после чего измените значение максимального количество подключений на
999999
. Сохраните изменения последовательным нажатием на кнопки «Применить» и «ОК». - Закройте «Редактор групповых политик» и перезагрузите компьютер.
Описанная выше манипуляция позволит решить проблему, но является потенциально небезопасной, поэтому используйте её в самом крайнем случае.
Порой вышеприведённые действия не приводят к желаемому результату. В этом случае отметим, что скорее всего дело уже не во враппере и библиотеке. Действуйте так:
- Сначала проверьте параметры брандмауэра, как системного, так и стороннего, и разрешите в нём соединение по РДП.
Урок: Настройка брандмауэра на Windows 10
- Также стоит проверить состояние портов – не исключено, что требуемый для работы нужного протокола просто закрыт.
Подробнее: Как открыть порты на Windows 10
- Ещё раз проверьте редакцию целевой «десятки» – подключение по RDP не поддерживается в Windows 10 Home.
-
Рассматриваемый тип соединения может не работать из-за повреждений соответствующих системных файлов. Для начала проверьте, не завёлся ли в вашей системе вирус.
Подробнее: Борьба с компьютерными вирусами
После этого проверьте целостность компонентов ОС и восстановите их одним из возможных способов, если в этом появится необходимость.
Урок: Проверка целостности и восстановление системных файлов в Windows 10
Теперь вам известно, как нужно действовать в ситуации, когда RDP Wrapper перестал работать после обновления Windows 10, и что делать, если подключение по этому протоколу не работает в целом.
Еще статьи по данной теме:
Помогла ли Вам статья?
Удаленные пользователи могут подключаться к своим компьютерам Windows 10 или 11 через службу удаленных рабочих столов (RDP). Достаточно разрешить RDP доступ и подключиться к компьютеру с помощью любого клиента. Но есть ограничение на количество одновременных RDP сессии – допускается одновременная работа только одного удаленного пользователя. Если вы попробуете открыть вторую RDP сессию, появится предупреждение с запросом отключить сеанс первого пользователя.
В систему вошел другой пользователь. Если вы продолжите, он будет отключен. Вы все равно хотите войти в систему?
В английской версии предупреждение такое:
Another user is signed in. If you continue, they’ll be disconnected. Do you want to sign in anyway?
Во всех десктопных версиях Windows (включая Win 10 и 11) есть ряд ограничений на использование службы удаленного рабочего стола
- Вы можете удаленно подключаться по RDP только к старшим редакциям Windows (Professional, Enterprise). В домашних редакциях (Home/Single Language) RDP доступ заблокирован;
- Поддерживается только одно одновременное RDP подключение. При попытке запустить вторую RDP-сессию, пользователю будет предложено завершить активное подключение;
- Если пользователь работает за консолью компьютера (локально), то при удаленном подключении по RDP, его локальный сеанс будет отключен (заблокирован). Правильно и обратное утверждение: удаленный RDP сеанс принудительно завершается, если пользователь входит через консоль Windows.
Ограничение на количество одновременных RDP подключений в Windows является не техническим, но программным и лицензионным. Таким образом Microsoft запрещает создавать терминальный RDP сервер на базе рабочей станции для одновременной работы нескольких пользователей. Логика Microsoft проста: если вам нужен терминальный сервер — купите лицензию Windows Server, лицензии RDS CAL, установите и настройте роль Remote Desktop Session Host (RDSH).
Технически любая редакция Windows при наличии достаточного количества оперативной памяти может обслуживать одновременную работу нескольких десятков удаленных пользователей. В среднем на одну RDP сессию пользователя без учета запускаемых приложений требуется 150-200 Мб памяти. Т.е. максимальное количество одновременных RDP сессий в теории ограничивается только ресурсами компьютера.
Мы рассмотрим два способа убрать ограничение на количество одновременных RDP подключений к Windows 10 и 11: с помощью приложения RDP Wrapper и с помощью модификации системного файла termsrv.dll.
Содержание:
- RDP Wrapper: разрешить несколько RDP сеансов в Windows
- Не работает RDP Wrapper в Windows 10
- Модификация файла termsrv.dll для снятия ограничений RDP в Windows 10 и 11
- Патчинг файл termsrv.dll с помощью PowerShell скрипта
Примечание. Модификации системы, описанные в этой статье, считаются нарушением лицензионного соглашения 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). Утилита не развивается с 2017 года, но ее можно использовать на всех билдах 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) не поддерживается ([not supported]).
Дело в том, что под каждую версию Windows 10 должно быть описание в конфигурационном файле rdpwrap.ini. В вашем файле конфигурации просто нет настроек для вашего билда Windows 10.
Актуальную версию файла rdpwrap.ini можно скачать здесь https://raw.githubusercontent.com/sebaxakerhtc/rdpwrap.ini/master/rdpwrap.ini
Вручную скопируйте содержимое данной страницы в файл «C:Program FilesRDP Wrapperrdpwrap.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 FilesRDP Wrapperrdpwrap.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 в ветке HKLMSYSTEM CurrentControlSetControlTerminal ServerfSingleSessionPerUser).
- RDP Port — можно изменить номера порта удаленного рабочего стола со стандартного TCP 3389 на любой другой;
- В секции Session Shadowing Mode вы можете настроить режим теневого подключения к рабочему столу пользователей 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 и применения настроек .
Модификация файла termsrv.dll для снятия ограничений RDP в Windows 10 и 11
Чтобы убрать ограничение на количество RDP подключений пользователей в Windows 10 без использования rdpwraper, можно заменить файл termsrv.dll. Это файл библиотеки, которая используется службой Remote Desktop Services. Файл находится в каталоге C:WindowsSystem32.
Прежде, чем править или заменять файл termsrv.dll желательно создать его резервную копию. Это поможет вам в случае необходимости можно будет вернуться к исходной версии файла. Запустите командную строку с правами администратора и выполните команду:
copy c:WindowsSystem32termsrv.dll termsrv.dll_backup
Затем нужно стать владельцем файла. Проще всего это сделать из командной строки. Чтобы сменить владельца файла с TrustedInstaller на группу локальных администраторов с помощью команды:
takeown /F c:WindowsSystem32termsrv.dll /A
Должно появится сообщение: «SUCCESS: The file (or folder): «c:WindowsSystem32termsrv.dll» now owned by the administrators group».
Теперь с помощью icacls.exe предоставьте группе локальных администраторов полные права на файл termsrv.dll (Full Control):
icacls c:WindowsSystem32termsrv.dll /grant Administrators:F
(или
Администраторы
в русской версии Windows). Должно появится сообщение: «processed file: c:WindowsSystem32termsrv.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:WindowsSystem32termsrv.dll
Патчинг файл termsrv.dll с помощью PowerShell скрипта
Чтобы не редактировать файл termsrv.dll вручную с помощью HEX редактора, вы можете использовать следующий PowerShell скрипт для автоматического патчинга файла. Данный скрипт написан для версии Windows PowerShell, и не работает на PowerShell Core. Скрипт универсальный и может использоваться для внесения изменений в файл termsrv.dll на всех версиях Windows 10 и Windows 11.
# Остановить службу, сделать копию файл и изменить разрешения
Stop-Service UmRdpService -Force
Stop-Service TermService -Force
$termsrv_dll_acl = Get-Acl c:windowssystem32termsrv.dll
Copy-Item c:windowssystem32termsrv.dll c:windowssystem32termsrv.dll.copy
takeown /f c:windowssystem32termsrv.dll
$new_termsrv_dll_owner = (Get-Acl c:windowssystem32termsrv.dll).owner
cmd /c "icacls c:windowssystem32termsrv.dll /Grant $($new_termsrv_dll_owner):F /C"
# поиск шаблона в файле termsrv.dll
$dll_as_bytes = Get-Content c:windowssystem32termsrv.dll -Raw -Encoding byte
$dll_as_text = $dll_as_bytes.forEach('ToString', 'X2') -join ' '
$patternregex = ([regex]'39 81 3C 06 00 00(sSS){6}')
$patch = 'B8 00 01 00 00 89 81 38 06 00 00 90'
$checkPattern=Select-String -Pattern $patternregex -InputObject $dll_as_text
If ($checkPattern -ne $null) {
$dll_as_text_replaced = $dll_as_text -replace $patternregex, $patch
}
Elseif (Select-String -Pattern $patch -InputObject $dll_as_text) {
Write-Output 'The termsrv.dll file is already patch, exiting'
Exit
}
else {
Write-Output "Pattern not found"
}
# модификация файла termsrv.dll
[byte[]] $dll_as_bytes_replaced = -split $dll_as_text_replaced -replace '^', '0x'
Set-Content c:windowssystem32termsrv.dll.patched -Encoding Byte -Value $dll_as_bytes_replaced
# Сравним два файла
fc.exe /b c:windowssystem32termsrv.dll.patched c:windowssystem32termsrv.dll
# замена оригинального файла
Copy-Item c:windowssystem32termsrv.dll.patched c:windowssystem32termsrv.dll -Force
Set-Acl c:windowssystem32termsrv.dll $termsrv_dll_acl
Start-Service UmRdpService
Start-Service TermService
Полный код скрипта доступен в моем GitHub репозитарии по ссылке https://github.com/winadm/posh/blob/master/Desktop/RDP_patch.ps1
Чтобы выполнить скрипт, скачайте его на свой компьютер. Измените настройки политики запуска скриптов PowerShell:
Set-ExecutionPolicy Bypass -Scope Process -Force
Запустите скрипт:
C:usersrootdesktoprdp_patch.ps1
Скрипт можно запускать после установки обновлений Windows, чтобы немедленно внести изменения в файл termsrv.dll (защищает вас от ручной правки файла после каждой установки обновлений). Скрипт подходит для всех версий Windows 10 старше 1809 и для Windows 11.
Преимущество способа включения нескольких RDP сессий в Windows 10 путем замены файла termsrv.dll в том, что на него не реагируют антивирусы. В отличии от утилиты RDPWrap, которую многие антивирусов считают Malware/HackTool/Trojan. Основной недостаток — вам придется вручную править файл при каждом обновлении билда Windows 10 (или при обновлении версии файла termsrv.dll в рамках ежемесячных кумулятивных обновлений). А если вы используете RDPWrapper, то после установки обновлений Windows вам придётся обновлять файл rdpwrap.ini.
В этой статье вы рассмотрели, как снять ограничение на количество одновременных RDP подключений пользователей, и запустить бесплатный терминального сервера на клиентской Windows 10 или 11.
После выхода обновлений для windows 10, от 18 марта 2020 года у многих моих пользователей перестала работать библиотека RDP WRAPPER. И если запустить утилиту rdpconf.exe, в ней будет написано not supported и соответственно не работает удаленный рабочий стол.
Что бы исправить данное недоразумение, у меня ушел час, пока нашел исправленную библиотеку, которая будет корректно работать на обновленной десятке. Сегодня я поделюсь знаниями, для тех кто так же столкнулся с такой проблемой. Надеюсь запись будет полезна и ты, дорогой читатель сэкономишь время на поисках решений!
- Для начала необходимо удалить старую библиотеку rdp wrapper, запустив файл uninstall.bat по пути c:Program FilesRDP Wrapper После того как пройдет удаление, полностью удаляем данную папку из program files со всеми файлами в ней.
- Скачиваем исправленную библиотеку по ссылке или напрямую с гитхаба и распаковываем архив.
- Запускаем файл install.bat от имени администратора и ждем пока завершится процесс установки.
- Копируем все файлы из распакованного архива в c:Program FilesRDP Wrapper с заменой файлов в этой папке.
- Открываем утилиту rdpconf.exe и смотрим статус, если not supported идем далее…
- В этой версии библиотеки rdpwrap исправлено автообновление компонентов, запускаем файл autoupdate.bat от имени администратора и ждем завершения процесса.
- Скачиваем rdpwrap_ini_updater от 18.05.2020 года.
- Распаковываем, копируем в папку c:Program FilesRDP Wrapper и запускаем rdpwrap_ini_updater.bat от имени администратора, дожидаемся процесса установки.
- Запускаем rdpconf.exe и наблюдаем радостную картину 🙂
На этом установка завершена и можно пробовать подключаться с других рабочих станций! 🙂
Системные администраторы делятся на тех, кто еще не делает бэкап, и тех, кто их уже делает. Народная мудрость.
Если что-то пошло не так с доступом по RDP через RDPWrap (например, антивирус удалил файлы ПО), и служба «Службы удаленных рабочих столов» не запускается с ошибкой «указанный файл не найден», то нужно в ветку реестра HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesTermServiceParameters добавить параметр ServiceDll — REG_EXPAND_SZ — %SystemRoot%System32 ermsrv.dll
Это вернёт работоспособность встроенному RDP.
И теперь можно переустановить RDPWrap
Спасибо за статейку! Выручил!
Владимир Вязниковцев 4 дн
Полтора месяца я искал решение этой проблемы и вот оно счастье! Благодарю о великий человек! Думал уже систему придётся грохать 🙁
Как и в прошлых клиентских версиях операционных систем Майкрософт, пользователи 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 Wrapper Library. Эта программа работает в качестве прослойки между менеджером управления службами (SCM- Service Control Manager) и службой терминалов (Terminal Services) и позволяет включить не только поддержку нескольких одновременных RDP сессии, но и активировать поддержку RDP Host на домашних редакциях Windows 10. RDP Wrapper не вносит никаких изменений в файл termsrv.dll, просто подгружая termsrv с изменёнными параметрами.
Таким образом, это решение будет работать даже при обновлении версии файла termsrv.dll, что позволяет не опасаться обновлений Windows.
Скачать 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 года.
Архив 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 все элементы окрашены в зеленый цвет.
Из интересных особенностей новой версии RDP Wrapper:
-
опция H >В том случае, если после обновления версии 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:WindowsSystem32).
Перед модификацией файла termsrv.dll желательно создать его резервную копию (в случае необходимости можно будет вернуться к первоначальной версии файла):
copy c:WindowsSystem32 ermsrv.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)
39 81 3C 06 00 00 0F 84 73 42 02 00
И замените ее на:
B8 00 01 00 00 89 81 38 06 00 00 90
Сохраните файл и запустите службу TermService.
У настольных операционных систем Microsoft есть некоторые ограничения, связанные с работой службы удаленных рабочих столов. Так во первых, поддержка серверной части (RDP Host) есть только в старших редакциях Windows (не ниже Professional). В домашних редакциях этот функционал отключен, поэтому подключиться к младшим версиям Windows по RDP невозможно.
И во вторых, количество параллельных RDP-сессий ограничено. Допускается только одно одновременное подключение по RDP, а при попытке открыть вторую RDP-сессию система выдаст сообщение о том, что в системе уже находится один пользователь и предложит его выкинуть завершить его сеанс.
Обойти эти ограничения позволит проект RDP Wrapper Library by Stas’M. RDP Wrapper работает как прослойка между менеджером служб (Service Control Manager, SCM) и службой удаленных рабочих столов. При этом, в отличии от других решений подобного рода, он не подвергает изменениям файл termsrv.dll (библиотека, используемая службой Remote Desktop Services), что позволяет не опасаться обновлений Windows.
Судя по официальному сайту, проект активно живет и развивается. На данный момент выложена версия 1.5 от 2014.12.11, для которой заявлена поддержка новейших ОС, включая Windows 10 Technical Preview. Также доступны исходники, так что при желании можно самостоятельно собрать проект.
Загрузить RDP Wrapper можно со страницы программы в репозитории GitHub. В архив входят следующие компоненты:
• RDPWinst.exe — инсталлятор, с помощью которого производится установка и удаление RDP Wrapper;
• RDPConf.exe — утилита для настройки параметров подключения;
• RDPCheck.exe — утилита для локальной проверки работы RDP;
• install.bat и uninstall.bat — bat-файлы для удобства установкиудаления программы.
Для установки программы надо открыть командную строку с правами администратора, перейти в директорию с распакованными файлами и запустить install.bat. Все остальное, включая настройку исключений на файерволле, установщик сделает сам.
Дополнительно можно запустить утилиту RDPConf.exe, которая позволяет включатьотключать доступ, а также настраивать основные параметры подключения (порт, количество сессий на пользователя, тип аутентификации и пр.).
Ну и в качестве проверки я открыл на компьютер с установленной Windows 7 Home Basic две RDP-сессии для двух разных пользователей.
Что еще можно сказать. Проект однозначно полезный, в некоторых ситуациях даже незаменимый. Из минусов же — используя RDP Wrapper вы скорее всего нарушаете лицензионное соглашение.
Дополнение 04.05.2019.
Для корректной работы на Windows 10 1809 требуется обновить файл конфигурации rdpwrap.ini. В него надо добавить следующие строчки:
[10.0.17763.292]
; Patch CEnforcementCore::GetInstanceOfTSLicense
LocalOnlyPatch.x86=1
LocalOnlyOffset.x86=AFAD4
LocalOnlyCode.x86=jmpshort
LocalOnlyPatch.x64=1
LocalOnlyOffset.x64=77A11
LocalOnlyCode.x64=jmpshort
; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled
SingleUserPatch.x86=1
SingleUserOffset.x86=4D665
SingleUserCode.x86=nop
SingleUserPatch.x64=1
SingleUserOffset.x64=1322C
SingleUserCode.x64=Zero
; Patch CDefPolicy::Query
DefPolicyPatch.x86=1
DefPolicyOffset.x86=4BE69
DefPolicyCode.x86=CDefPolicy_Query_eax_ecx
DefPolicyPatch.x64=1
DefPolicyOffset.x64=17F45
DefPolicyCode.x64=CDefPolicy_Query_eax_rcx
; Hook CSLQuery::Initialize
SLInitHook.x86=1
SLInitOffset.x86=5B18A
SLInitFunc.x86=New_CSLQuery_Initialize
SLInitHook.x64=1
SLInitOffset.x64=1ABFC
SLInitFunc.x64=New_CSLQuery_Initialize
И в конец ini файла дополнительно надо добавить строки:
[10.0.17763.292-SLInit]
bInitialized.x86 =CD798
bServerSku.x86 =CD79C
lMaxUserSessions.x86 =CD7A0
bAppServerAllowed.x86 =CD7A8
bRemoteConnAllowed.x86=CD7AC
bMultimonAllowed.x86 =CD7B0
ulMaxDebugSessions.x86=CD7B4
bFUSEnabled.x86 =CD7B8
bInitialized.x64 =ECAB0
bServerSku.x64 =ECAB4
lMaxUserSessions.x64 =ECAB8
bAppServerAllowed.x64 =ECAC0
bRemoteConnAllowed.x64=ECAC4
bMultimonAllowed.x64 =ECAC8
ulMaxDebugSessions.x64=ECACC
bFUSEnabled.x64 =ECAD0
В конце файла обязательно пустая строка.
Содержание
- Способ 1: Замена файла конфигурации
- Способ 2: Настройка в «Редакторе групповых политик»
- Не работает RDP в целом
- Вопросы и ответы
Подключение по протоколу RDP в Виндовс 10 активно используется как некоторыми рядовыми пользователями, так и профессионалами. Для обхода системного ограничения последние использует программу RDP Wrap. Увы, но после обновлений системы этот софт перестаёт работать, и сегодня мы поможем вам решить эту проблему.
Способ 1: Замена файла конфигурации
Проблемы с работой рассматриваемой программы возникают вследствие обновлений системной библиотеки termsrv.dll. Под каждую её версию RDP Wrap нужно конфигурировать заново. К счастью, разработчики приложения заботятся об этом сами и после каждого мажорного апдейта выпускают новый конфигурационный файл. Алгоритм его замены выглядит следующим образом:
Репозиторий на GitHub
Сохраните файл rdpwrap.ini в любое подходящее место на компьютере.
После запуска списка служб найдите запись «Службы удалённых рабочих столов», выделите её и нажмите «Остановить службу».
Подтвердите остановку.
C:Program FilesRDP Wrapper
Скопируйте полученный ранее rdpwrap.ini и вставьте в эту папку.
Подтвердите замену файла.
Проверьте строку «Listener» – если надпись в ней гласит «Fully supported», проблема устранена.
Данный метод является предпочтительным, и к следующему следует прибегать только в случае отсутствия его эффективности.
Способ 2: Настройка в «Редакторе групповых политик»
Пользователи Windows 10 редакций Профессиональная и Корпоративная могут решить рассматриваемую проблему настройкой определённого параметра в «Редакторе групповых политик».
Конфигурация компьютера/Административные шаблоны/Компоненты Windows/Службы удаленных рабочих столов/Узел сеансов удаленных рабочих столов/Подключения
Установите положение «Включено», после чего измените значение максимального количество подключений на 999999. Сохраните изменения последовательным нажатием на кнопки «Применить» и «ОК».
Описанная выше манипуляция позволит решить проблему, но является потенциально небезопасной, поэтому используйте её в самом крайнем случае.
Не работает RDP в целом
Порой вышеприведённые действия не приводят к желаемому результату. В этом случае отметим, что скорее всего дело уже не во враппере и библиотеке. Действуйте так:
Урок: Настройка брандмауэра на Windows 10
Подробнее: Как открыть порты на Windows 10
Подробнее: Борьба с компьютерными вирусами
После этого проверьте целостность компонентов ОС и восстановите их одним из возможных способов, если в этом появится необходимость.
Урок: Проверка целостности и восстановление системных файлов в Windows 10
Теперь вам известно, как нужно действовать в ситуации, когда RDP Wrapper перестал работать после обновления Windows 10, и что делать, если подключение по этому протоколу не работает в целом.
null
Существует множество различий между двумя основными редакциями Windows 10 Home и Pro. Одно из ключевых различий — отсутствие Remote Desktop Services в Home редакции Windows 10. Покупку Pro лицензии на замену Home ради RDP, трудно назвать обоснованным решением при наличии модификаций, позволяющих вернуть функционал для работы с удалённым доступом. Например патченный файл «Termsrv.dll» в связке с системным процессом Service Control Manager.
Одно из лучших решений модификаций, которое предлагает сообщество — является RDP Wrapper Library. В интернете достаточно информации о данной библиотеке и её использовании. Однако она имеет свой основной недостаток в виде отсутствия обновлений с 27 декабря 2017 года. С того времени по сегодняшний день, в свет успели выйти версии Windows 10 начиная с 1703 и заканчивая 20H2.
Основная проблема возникающая при запуске RDP Wrapper — это [not supported] в Listener State из-за различий версий Service Control Manager с конфигом rdpwrap.ini
Пример конфига:
[10.0.18362.657] LocalOnlyPatch.x86=1 LocalOnlyOffset.x86=B7D06 LocalOnlyCode.x86=jmpshort LocalOnlyPatch.x64=1 LocalOnlyOffset.x64=82FB5 LocalOnlyCode.x64=jmpshort SingleUserPatch.x86=1 SingleUserOffset.x86=50535 SingleUserCode.x86=nop SingleUserPatch.x64=1 SingleUserOffset.x64=0DBFC SingleUserCode.x64=Zero DefPolicyPatch.x86=1 DefPolicyOffset.x86=50269 DefPolicyCode.x86=CDefPolicy_Query_eax_ecx DefPolicyPatch.x64=1 DefPolicyOffset.x64=1FE15 DefPolicyCode.x64=CDefPolicy_Query_eax_rcx SLInitHook.x86=1 SLInitOffset.x86=5A77A SLInitFunc.x86=New_CSLQuery_Initialize SLInitHook.x64=1 SLInitOffset.x64=22DDC SLInitFunc.x64=New_CSLQuery_Initialize [10.0.18362.657-SLInit] bInitialized.x86 =D577C bServerSku.x86 =D5780 lMaxUserSessions.x86 =D5784 bAppServerAllowed.x86 =D578C bRemoteConnAllowed.x86=D5790 bMultimonAllowed.x86 =D5794 ulMaxDebugSessions.x86=D5798 bFUSEnabled.x86 =D579C bInitialized.x64 =F6A8C bServerSku.x64 =F6A90 lMaxUserSessions.x64 =F6A94 bAppServerAllowed.x64 =F6A9C bRemoteConnAllowed.x64=F6AA0 bMultimonAllowed.x64 =F6AA4 ulMaxDebugSessions.x64=F6AA8 bFUSEnabled.x64 =F6AAC
Где 10.0.* версия SCM.
Основное решение проблемы [not supported] — это правка конфига под нужную версию SCM.
При «гугление» проблемы, можно обнаружить множестве веток обсуждений на GitHub с приведением конфигов к нужной версии. Для частичной автоматизации можно воспользоваться этим bat скриптом: https://github.com/asmtron/rdpwrap/blob/master/bin/autoupdate.bat
Его особенность, что после строчек:
REM ----------------------------------------- REM Location of new/updated rdpwrap.ini files REM -----------------------------------------
Можно добавлять свои найденные правки чужого конфига rdpwrap.ini, которые он успешно внесёт в основной конфиг rdpwrap.ini. Это помогает автоматизировать развёртыватывание RDP Wrapper в случае большого парка машин с разными сборками Windows 10 редакции Home.
Пример добавления найденного конгфига:
set rdpwrap_ini_update_github_1="https://raw.githubusercontent.com/asmtron/rdpwrap/master/res/rdpwrap.ini"
Где set задаёт значение в виде ссылки на конфиг.
При установке RDP Wrapper желательно заранее отключить все сетевые интерфейсы используя ncpa.cpl
По итогу пункт Listener State должен получить статус [fully supported] и можно проверять доступ по RDP: