Подробный гайд: несколько одновременных подключений по RDP в Windows 11
Важное предупреждение:
- Все описанные ниже методы обходят лицензионные ограничения Microsoft и могут нарушать условия использования (EULA). Используйте на свой страх и риск, предпочтительно в тестовых средах.
Почему это не работает «из коробки»?
В десктопных версиях Windows 10/11 (Home, Pro, Enterprise) действуют следующие ограничения:
| Ограничение | Описание |
|---|---|
| Одна активная сессия | При подключении второго пользователя первый автоматически отключается |
| Блокировка консоли | Локальный сеанс блокируется при удалённом подключении, и наоборот |
| Требования к редакции | RDP-сервер работает только в Pro/Enterprise, в Home — отключён |
Это программное ограничение лицензии, а не техническая невозможность. Технически любой ПК с достаточным объёмом ОЗУ (~150–200 МБ на сессию) может обслуживать десятки одновременных подключений.
Предварительная настройка (обязательно для всех методов)
1. Включите RDP:
Параметры→Система→Удалённый рабочий стол→ переключите на Включено- Или выполните:
SystemPropertiesRemote→ отметьте «Разрешить удалённые подключения»
2. Добавьте пользователей в группу:
Параметры→Учётные записи→Семья и другие пользователи- Или через
lusrmgr.msc→ группа «Пользователи удалённого рабочего стола»
3. Отключите спящий режим:
Параметры→Система→Электропитание→ «Никогда»
4. Проверьте брандмауэр:
- Порт 3389 (TCP) должен быть открыт для входящих подключений
Способ 1: RDP Wrapper Library (рекомендуемый)
RDP Wrapper — инструмент с открытым исходным кодом, который позволяет запускать несколько сессий без замены системных файлов.
Установка
1. Скачайте актуальную версию:
- Официальный релиз: github.com/stascorp/rdpwrap/releases (v1.6.2)
- Антивирусы могут блокировать как
PUA:Win32/RDPWrap— добавьте в исключения
2. Распакуйте архив и запустите от имени администратора:
install.bat
3. Проверьте статус:
RDPConfig.exe
Если видите [not supported] — обновите конфигурационный файл.
Обновление rdpwrap.ini (критично после обновлений Windows)
После каждого крупного обновления Windows файл rdpwrap.ini может устареть.
Обновите его:
# Остановите службу
Stop-Service TermService -Force
# Скачайте актуальный конфиг
Invoke-WebRequest `
https://raw.githubusercontent.com/sebaxakerhtc/rdpwrap.ini/master/rdpwrap.ini `
-OutFile "C:\Program Files\RDP Wrapper\rdpwrap.ini"
# Перезапустите службу
Start-Service TermService
После обновления все индикаторы в RDPConfig.exe должны стать зелёными, а статус — [Fully supported].
Дополнительные настройки
| Параметр | Где настроить | Описание |
|---|---|---|
| Несколько сессий для одного пользователя | RDPConfig.exe → «Single session per user» → Off |
Разрешает одному аккаунту несколько одновременных подключений |
| Лимит подключений | gpedit.msc → Конфигурация компьютера → Административные шаблоны → Компоненты Windows → Службы удалённых рабочих столов → Узел сеансов → Подключения → «Ограничить количество подключений» → 99999 |
|
| Скрыть пользователей на экране входа | RDPConfig.exe → «Hide users on logon screen» |
Повышает безопасность |
| Теневой режим (наблюдение) | RDPConfig.exe → «Session Shadowing Mode» |
Позволяет администратору видеть сеанс пользователя |
Проверка работы
qwinsta
Пример вывода при двух активных сессиях:
rdp-tcp#0 user1 1 Active
rdp-tcp#1 user2 2 Active
Способ 2: Патчинг termsrv.dll (альтернативный)
Предупреждение:
- Более рискованный метод: требует правки системного файла, может сломаться после обновлений.
Пошаговая инструкция
1. Создайте резервную копию:
copy C:\Windows\System32\termsrv.dll C:\Windows\System32\termsrv.dll.backup
2. Получите права на файл:
takeown /F C:\Windows\System32\termsrv.dll /A
icacls C:\Windows\System32\termsrv.dll /grant Administrators:F
3. Остановите службу:
net stop TermService
4. Узнайте сборку Windows:
winver
или
Get-ComputerInfo | Select WindowsProductName, WindowsVersion
5. Отредактируйте termsrv.dll в HEX-редакторе (Tiny Hexer, HxD):
| Сборка Windows | Найти (байты) | Заменить на |
|---|---|---|
| 11 24H2 / 25H2 | 8B 81 38 06 00 00 39 81 3C 06 00 00 75 |
B8 00 01 00 00 89 81 38 06 00 00 90 EB |
| 11 23H2 | 39 81 3C 06 00 00 0F 84 75 7A 01 00 |
B8 00 01 00 00 89 81 38 06 00 00 90 |
| 10 22H2 | 39 81 3C 06 00 00 0F 84 85 45 01 00 |
B8 00 01 00 00 89 81 38 06 00 00 90 |
Совет:
- Ищите начало последовательности
39 81 3C 06 00 00 0F 84, последние 4 байта могут отличаться.
Запустите службу:
net start TermService
Автоматизация через PowerShell
Используйте актуальный скрипт:
TermsrvPatcher на GitHub - github.com/fabianosrc/TermsrvPatcher — автоматически определяет сборку и применяет патч.
# Разблокируйте скрипт
Unblock-File .\TermsrvPatcher.ps1
# Разрешите выполнение
Set-ExecutionPolicy RemoteSigned -Scope Process -Force
# Запустите
.\TermsrvPatcher.ps1
Преимущество:
- антивирусы обычно не реагируют на патчинг DLL, в отличие от RDP Wrapper.
Недостаток:
- требуется повторный патч после каждого обновления
termsrv.dll.
Способ 3: Windows 11 Enterprise Multi-Session (официальный)
Единственный лицензионно корректный способ — использовать специальную редакцию Windows 11 Enterprise Multi-Session, предназначенную для Azure Virtual Desktop.
Ключевые особенности:
- Поддерживает неограниченное число одновременных сессий «из коробки»
- Лицензируется только для использования в Azure (локальное использование нарушает EULA)
- Требует активации через KMS или MAK-ключ
Конвертация Pro → Multi-Session (только для тестов!)
# Проверка текущей редакции
DISM /online /Get-CurrentEdition
# Обновление до Enterprise
changepk.exe /ProductKey NPPR9-FWDCX-D2C8J-H872K-2YT43
# Установка GVLK-ключа для Multi-Session
slmgr.vbs /ipk CPWHC-NT2C7-VYW78-DHDB2-PG3GK
# Активация (пример для локального KMS)
slmgr /skms kms.local:1688
slmgr /ato
После перезагрузки настройте лицензирование через gpedit.msc:
Компоненты Windows→Службы удалённых рабочих столов→Лицензирование→ Per-User.
Устранение частых проблем
| Проблема | Решение |
|---|---|
[not supported] в RDPConfig |
Обновите rdpwrap.ini |
Listener state: Not listening |
Переустановите RDP Wrapper: rdpwinst.exe -u → rdpwinst.exe -i |
| Ошибка «все подключения заняты» | Включите политику «Ограничить количество подключений» → 99999 |
| Не работает печать через RDP | В rdpwrap.ini установите SLInitHook.x64=0 для вашей сборки |
| Сессии «зависают» после обновления | Обновите rdpwrap.ini или перепатчите termsrv.dll |
Сравнение методов
| Критерий | RDP Wrapper | Патчинг termsrv.dll | Enterprise Multi-Session |
|---|---|---|---|
| Сложность | Низкая | Высокая | Средняя |
| Стабильность | Зависит от ini | Требует обновления | Официальная |
| Антивирусы | Часто блокируют | Обычно пропускают | Чисто |
| Обновления ОС | Нужно обновлять ini | Нужно перепатчить | Автоматически |
| Лицензионная чистота | Нарушает EULA | Нарушает EULA | Только в Azure |
Рекомендации по безопасности
- Не используйте публичные порты 3389 — смените на нестандартный в
RDPConfig.exeили реестре
2. Включите NLA (Network Level Authentication):
Параметры RDP→ «Разрешать подключения только с компьютеров, на которых работает Remote Desktop с проверкой подлинности»
- Используйте сложные пароли и, по возможности, 2FA через RDP-шлюз
- Ограничьте доступ по IP через брандмауэр
5. Ведите журнал подключений:
Просмотр событий→Журналы Windows→Безопасность→ фильтр по событию 4624 (успешный вход)
Совет:
- Для производственных сред с несколькими пользователями рассмотрите Windows Server + RDS — это единственный полностью легальный и масштабируемый вариант с поддержкой лицензий RDS CAL.