Терминальный сервер из Windows 10 | Thinstation по русски

Терминальный сервер из Windows 10

Disclaimer: статья размещена только в познавательных целях.


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

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

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

Прежде чем править файл termsrv.dll, вам нужно стать его владельцем и предоставить группе администраторов полные права на него. Проще всего это сделать из командной строки. Чтобы сменить владельца файла с TrustedInstaller на группу локальных администраторов с помощью команды:

takeown /F c:\Windows\System32\termsrv.dll /A

Должно появится сообщение: «Успех. Владельцем файла (или папки) "c:\Windows\System32\termsrv.dll" является группа администраторов» или «SUCCESS: The file (or folder): «c:\Windows\System32\termsrv.dll» now owned by the administrators group».

Теперь предоставим группе локальных администраторов полные права на файл termsrv.dll (Full Control):

icacls c:\Windows\System32\termsrv.dll /grant Администраторы:F

(или Administrators в англоязычной версии Windows). Должно появится сообщение: «обработанный файл: c:\Windows\System32\termsrv.dll Успешно обработано 1 файлов; не удалось обработать 0 файлов» или «processed file: c:\Windows\System32\termsrv.dll Successfully processed 1 files; Failed processing 0 files«.

Теперь нужно остановить службу Remote Desktop Service (TermService) из консоли services.msc или из командной строки:

Net stop TermService

Прежде чем идти дальше, вам нужно узнать вашу версию (билд) Windows 10. Проще всего это сделать с помощью следующей команды PowerShell:

Get-ComputerInfo | select WindowsProductName, WindowsVersion

В моем случае установлена Windows 10 билд 1909.

Затем откройте файл termsrv.dll с помощью любого HEX редактора (к примеру, Tiny Hexer). В зависимости от билда нужно найти и заменить строку:

Версия Windows 10 Найти строку Заменить на

Windows 10 x64 2004

39 81 3C 06 00 00 0F 84 D9 51 01 00  B8 00 01 00 00 89 81 38 06 00 00 90
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 

Например, для самой первой редакции Windows 10 x64 RTM 10240 (версия файла termsrv.dll — 10.0.10240.16384) нужно открыть файл termsrv.dll в 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.

Если что-то пошло не так, и у вас возникнут проблемы со службой RDP, остановите службу и замените модифицированный файл termsrv.dll исходной версией:

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

Преимущество способа включения нескольких RDP сессий в Windows 10 путем замены файла termsrv.dll в том, что на него не реагируют антивирусы.
Основной недостаток — вам придется вручную править файл при каждом обновлении билда Windows 10 (или при обновлении версии файла termsrv.dll в рамках ежемесячных кумулятивных обновлений).

Дополнения и обновления смотрите на форуме.

PS
Попалась ещё такая информация:

1903 и 1909 оригинал и патч:
Find:
39 81 3C 06 00 00 0F 84 5D 61 01 00
Replace With:
B8 00 01 00 00 89 81 38 06 00 00 90
Find:
04 74 11 48 8D 15 77
Replace With:
04 EB 11 48 8D 15 77
Find:
58 01 00 00 FF 15 F7
Replace With:
58 00 00 00 FF 15 F7

PPS

Альтернативой модификации файла 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 (последняя доступная версия RDP Wrapper Library v1.6.2) и установить.

 

Обсудить на форуме (комментариев 58).