Гайд по патчингу termsrv.dll на несколько одновременных RDP-сеансов в Windows
Ниже представлен подробный гайд по использованию патча для termsrv.dll, который позволяет решить проблему Windows на один одновременный сеанс удалённого рабочего стола (RDP). Материал носит ознакомительный характер. Используйте его только на своих устройствах и в образовательных целях.
Что такое termsrv.dll и зачем нужен патч?
termsrv.dll — системная библиотека Windows, отвечающая за службу удалённых рабочих столов (TermService). В клиентских версиях Windows (Pro, Home) она содержит ограничение: одновременно может быть активен только один RDP-сеанс (локальный пользователь вытесняется при удалённом подключении). Патч модифицирует несколько байт в этой библиотеке, отключая проверку на многопользовательский режим, что позволяет нескольким пользователям работать через RDP одновременно.
Предупреждения
- Риск нестабильности — неправильное патчирование может привести к сбоям службы RDP или системы в целом.
- Обновления Windows — после крупных обновлений патч может быть перезаписан, и процедуру придётся повторять.
- Безопасность — загрузка скриптов из непроверенных источников опасна (вирусы, бэкдоры). Проверяйте код перед запуском.
Способы патчинга
Существует два основных подхода:
- Ручное патчирование — поиск и замена определённых байтов в
termsrv.dllс помощью hex-редактора или специального скрипта. - Использование готового инструмента RDP Wrapper Library — более удобный и известный проект, который автоматически находит и применяет патч, а также управляет конфигурацией.
Рассмотрим оба варианта, но акцент сделаем на PowerShell-скрипте, который упомянут в запросе.
Подготовка к патчингу
1. Определите версию и сборку Windows
Нажмите Win + R, введите winver и запишите версию (например, 22H2, сборка 19045). Патч должен соответствовать конкретной сборке, иначе termsrv.dll может быть повреждён.
2. Создайте точку восстановления системы
- Откройте «Создание точки восстановления» (
sysdm.cpl→ вкладка «Защита системы»). - Выберите системный диск, нажмите «Создать» и задайте имя. Это позволит откатить изменения при сбое.
3. Сделайте резервную копию termsrv.dll
Файл находится в C:\Windows\System32\termsrv.dll. Скопируйте его в безопасное место (например, на рабочий стол) с правами администратора.
4. Остановите службу Remote Desktop Services
В командной строке от имени администратора выполните:
net stop TermService
Если служба не останавливается, перезагрузитесь в безопасном режиме.
Ручное патчирование с помощью PowerShell-скрипта
Ниже приведён общий алгоритм работы PowerShell-скрипта, который автоматически находит нужные байты в termsrv.dll и заменяет их. Реальные скрипты (например, termsrv_rdp_patch.ps1) могут отличаться в зависимости от версии Windows, поэтому внимательно читайте комментарии внутри скрипта.
Шаг 1. Получение скрипта
Найдите и скачайте проверенный скрипт для вашей сборки Windows. Часто такие скрипты публикуются на форумах (My Digital Life, GitHub). Убедитесь, что у вас есть его содержимое, чтобы понимать, что он делает.
Примерная структура скрипта:
# Поиск и замена байтов в termsrv.dll
$file = "C:\Windows\System32\termsrv.dll"
$backup = "C:\backup_termsrv.dll"
Copy-Item $file $backup
$bytes = [System.IO.File]::ReadAllBytes($file)
$pattern = [byte[]](0x39,0x81,0x3C,0x06,0x00,0x00,0x00,0x0F,0x84) # пример, зависит от версии
$replacement = [byte[]](0xB8,0x00,0x01,0x00,0x00,0x89,0x81,0x38,0x06) # пример
# Поиск паттерна
for ($i=0; $i -lt $bytes.Length - $pattern.Length; $i++) {
$match = $true
for ($j=0; $j -lt $pattern.Length; $j++) {
if ($bytes[$i+$j] -ne $pattern[$j]) { $match = $false; break }
}
if ($match) {
Write-Host "Паттерн найден на смещении $i"
# Замена
for ($j=0; $j -lt $replacement.Length; $j++) {
$bytes[$i+$j] = $replacement[$j]
}
break
}
}
[System.IO.File]::WriteAllBytes($file, $bytes)
Важно:
Приведённые байтовые последовательности — лишь иллюстрация. Для каждой сборки Windows они свои. Использование неправильного паттерна сломает файл.
Шаг 2. Запуск скрипта
1. Откройте PowerShell от имени администратора.
2. При необходимости разрешите выполнение скриптов:
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope Process
3. Перейдите в папку со скриптом и выполните его:
.\termsrv_rdp_patch.ps1
4. Если скрипт сообщает об успешной замене, перезапустите службу:
net start TermService
Шаг 3. Проверка
Подключитесь по RDP с другого устройства под другим пользователем. Если всё работает, локальный сеанс не будет завершён, а вы получите второй одновременный сеанс.
Альтернатива: RDP Wrapper Library
Более надёжный и популярный инструмент, который автоматически подбирает патч для вашей версии Windows.
Установка RDP Wrapper
- Скачайте последний релиз с официального репозитория GitHub - https://github.com/stascorp/rdpwrap/releases (архив
RDPWrap-vX.X.X.zip). - Распакуйте архив в удобную папку.
- Запустите
install.batот имени администратора. - После установки запустите
RDPConf.exe— появится окно конфигурации. - Проверьте статус:
- Listener state должен быть
Listening. - Service state —
Running. - В поле Diagnostics не должно быть красных предупреждений.
- Listener state должен быть
- Если напротив
Wrapper stateуказаноNot supported, обновите файлrdpwrap.ini(инструкции есть в README репозитория).
Использование
После успешной установки можно подключаться по RDP одновременно несколькими пользователями. Дополнительно можно настроить поведение через RDPConf.exe (например, разрешить несколько сеансов для одного пользователя).
Устранение неполадок
- Служба не запускается — восстановите оригинальный
termsrv.dllиз резервной копии и перезагрузитесь. - После обновления Windows патч перестал работать — повторите процедуру с новой версией патча/RDP Wrapper.
- Не удаётся изменить файл — возможно, недостаточно прав. Загрузитесь в безопасном режиме или временно отключите антивирус.
- Ошибка «Не найден паттерн» — скрипт не подходит для вашей сборки, найдите другой или используйте RDP Wrapper.
Заключение
Патч termsrv.dll позволяет решить вопрос на количество одновременных RDP-сеансов в клиентских версиях Windows. Наиболее простой способ — использовать RDP Wrapper Library, который автоматизирует процесс. Если вы предпочитаете PowerShell-скрипт, убедитесь, что он соответствует вашей версии ОС и понимаете, какие изменения он вносит.
Важно:
Любые модификации системы вы делаете на свой страх и риск. Рекомендуется делать резервные копии и тестировать изменения на виртуальной машине перед применением на рабочем компьютере.
Мы делимся этой технической информацией, чтобы помочь вам в решении задач — используйте её с пониманием. Статья носит рекомендательный характер, поэтому, пожалуйста, применяйте описанные методы осмотрительно.