Введение
Ранее я описывал способ, как сделать терминальный сервер из Windows 7. Сейчас актуальна современная операционная система Windows 10. В связи с тем, что поддержка Windows 7 уже закончена, всем так или иначе со временем придется работать в Windows 10, даже если предыдущая версия вас полностью устраивает.
Полезная возможность сделать из обычной Window 10 терминальный сервер. Ранее я не один раз использовал эту функцию для работы в файловой 1С нескольких человек одновременно. Для небольшого коллектива из нескольких сотрудников это вполне удобно и оправданно, так как покупать полноценный сервер и серверную ОС для таких задач нецелесообразно.
Сразу сделаю важное замечание. Я не рекомендую использовать сервер терминалов на основе windows 10 там, где критично, чтобы все работало стабильно и простой недопустим
Часто после обновлений слетает настроенный функционал и восстановить его работу не всегда получится быстро. Имейте это ввиду.
Загрузите и замените файл termsrv.dll
Последнее решение — вручную загрузить и заменить файл termsrv.dll в соответствующей папке на диске. Выберите версию файла, совместимую с вашей операционной системой, и нажмите кнопку «Скачать». Затем перейдите в папку «Загруженные» вашего веб-браузера и скопируйте загруженный файл termsrv.dll.
Перейдите в папку, в которой должен находиться файл, и вставьте загруженный файл. Ниже приведен список путей к каталогу файлов termsrv.dll.
- Windows 10: C:\Windows\System32\
- Windows 8.1: C:\Windows\System32\
- Windows 8: 1: C:\Windows\System32\
- Windows 7: C:\Windows\System32\
- Windows Vista: C:\Windows\System32\
- Windows XP: —
Если действия не помогли решить проблему с файлом termsrv.dll, обратитесь к профессионалу. Существует вероятность того, что ошибка (и) может быть связана с устройством и, следовательно, должна быть устранена на аппаратном уровне. Может потребоваться новая установка операционной системы — неправильный процесс установки системы может привести к потере данных.
Модификация файла 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
Пользователю не удается войти, при этом отображаются сообщения «Ошибка аутентификации» и «Защита CredSSP от атак с использованием криптографического оракула»
Когда пользователи пытаются войти с использованием любой версии Windows (начиная с Windows Vista с пакетом обновления 2 (SP2) или Windows Server 2008 с пакетом обновления 2 (SP2)), они получают отказ в доступе и такие сообщения:
Ошибка «Исправление шифрования CredSSP» ссылается на набор обновлений системы безопасности, выпущенный в марте, апреле и мае 2018 г. CredSSP — это поставщик проверки подлинности, который обрабатывает запросы проверки подлинности для других приложений. Обновление за 13 марта 2018 г., 3B и все последующие обновления подверглись эксплойту, когда злоумышленник мог передать учетные данные пользователя для выполнения кода в целевой системе.
В исходные обновления была добавлена поддержка нового объекта групповой политики «Защита от атак с использованием криптографического оракула», который может иметь следующие настройки:
- Уязвимо. Клиентские приложения, использующие CredSSP, могли переключиться на небезопасные версии, но из-за этого удаленные рабочие столы могли подвергаться атакам. Службы, использующие CredSSP, принимали клиенты, которые не были обновлены.
- Устранено. Клиентские приложения, использующие CredSSP, не могут переключиться на небезопасные версии, но службы, использующие CredSSP, принимают клиенты, которые не были обновлены.
-
Принудительно обновленные клиенты. Клиентские приложения, использующие CredSSP, не могут переключиться на небезопасные версии, и службы, использующие CredSSP, не принимают клиенты без установленных обновлений.
Примечание
Этот параметр не следует развертывать, пока все узлы поддержки в удаленном расположении не будут поддерживать последнюю версию.
В обновлении за 8 мая 2018 г. значение для параметра по умолчанию «Защита от атак с использованием криптографического оракула» изменилось с «Уязвимо» на «Устранено». После реализации этого изменения клиенты Удаленного рабочего стола, на которых были установлены обновления, не могут подключаться к серверам без этого обновления (или к обновленным серверам, которые еще не были перезапущены). Подробные сведения об обновлениях CredSSP см. в статье базы знаний KB4093492.
Чтобы устранить эту проблему, обновите и перезапустите все системы. Полный список обновлений и дополнительные сведения об уязвимостях см. в разделе CVE-2018-0886 | CredSSP Remote Code Execution Vulnerability (CVE-2018-0886 | Уязвимость CredSSP, допускающая удаленное выполнение кода).
Чтобы устранить эту проблему до завершения обновления, просмотрите список допустимых типов подключений в обновлении KB4093492. Если нет других осуществимых альтернатив, можете попробовать один из следующих методов:
На затронутых клиентских компьютерах верните для политики «Защита от атак с использованием криптографического оракула» значение Уязвимо.
Измените следующие политики в папке групповой политики, выбрав Конфигурация компьютера\Административные шаблоны\Компоненты Windows\Службы удаленных рабочих столов\Узел сеансов удаленных рабочих столов\Безопасность: для политики Требовать использования специального уровня безопасности для удаленных подключений по протоколу RDP задайте значение Включено и выберите RDP.
для политики Требовать проверку подлинности пользователя для удаленных подключений путем проверки подлинности на уровне сети задайте значение Отключено.
Важно!
Изменение этих групповых политик делает развертывание менее защищенным. Мы рекомендуем использовать их только временно (или вообще не использовать).. Дополнительные сведения о работе с групповой политикой см
в разделе
Дополнительные сведения о работе с групповой политикой см. в разделе .
Конфигурирование RDP
Windows
Remote Desktop Connection
Откройте Панель Управления и перейдите в Система и Безопасность -> Система
Панель Управления
System properties
Доступны три опции под пунктом «Удаленный рабочий стол»:
- Не разрешать удаленные подключения к этому компьютеру» — Эта опция предотвращает пользователей от подключений к их компьютерам с использованием Remote Desktop Connection или RemoteApp. RemoteApp подключение отличается тем, что соединение происходит к одному приложению.
- «Разрешить удаленные подключение к этому компьютеру» (Windows 10 и Windows 8.1) или «Разрешать подключения от компьютеров с любой версией удаленного рабочего стола» (в Windows 7) — это позволит пользователям, использующим любую версию RemoteApp или Remote Desktop Connection, подключаться к вашему компьютеру. Используйте этот режим, если вы не уверены, какую версию удаленного рабочего стола клиент будет использовать, или если они используют стороннее приложение Remote Desktop Connection. Например, клиентам Ubuntu вероятно потребуется вторая опция.
- «Разрешать подключения только от компьютеров с удаленным рабочим столом с сетевой проверкой подлинности» — эта опция ограничивает Remote Desktop Connections до использования версий, которые имеют Network Level Authentication. Network Level Authentication была введена в Remote Desktop Client 6.0. Если компьютер клиента запущен под управлением Windows 10, Windows 8.1, Windows 7 или он недавно скачал клиент Remote Desktop Connection, то используйте эту опцию, так как этот режим более защищенный.
Теперь можно нажать «ОК», и клиенты смогут войти в ваш компьютер через Remote Desktop Connection, используя учетные данные для пользователей группы администраторов.
Если служба ролей узла сеанса удаленного рабочего стола не установлена на компьютере, количество подключений ограничено максимум двумя одновременными подключениями к этому компьютеру.
Windows Server
Remote Desktop Services
Установка RDS
Установка RDS
Remote Desktop Licensing (RD Licensing), бывший Terminal Services Licensing (TS Licensing), управляет лицензиями доступа клиентов служб удаленного рабочего стола (RDS CAL), которые необходимы для каждого устройства или пользователя для подключения к серверу узла сеанса удаленного рабочего стола (RD Session Host). RD Licensing используется для установки, выпуска и отслеживания доступности лицензий RDS CAL на сервере лицензий удаленного рабочего стола.
Когда клиент — либо пользователь, либо устройство — подключается к серверу узла сеанса удаленного рабочего стола, сервер определяет, нужна ли лицензия RDS CAL. Сервер узла сеанса удаленного рабочего стола затем запрашивает RDS CAL из сервера лицензий удаленного рабочего стола от имени клиента, пытающегося подключиться к серверу узла сеанса удаленного рабочего стола. Если подходящая RDS CAL доступна на сервере лицензий, RDS CAL выдается клиенту, и клиент может подключаться к серверу узла сеанса удаленного рабочего стола.
Чтобы изменить число одновременных удаленных соединений разрешенный для подключения:
- На сервере узла сеанса удаленного рабочего стола откройте конфигурацию узла сеанса удаленного рабочего стола. Чтобы это сделать, кликнете Пуск, затем Административные Инструменты, потом Службы удаленного рабочего стола, и наконец конфигурация узла сеанса удаленного рабочего стола.
- Под «Подключения» кликнете правой кнопкой на имя подключения и нажмите свойства.
- В диалоговом окне «Свойства» на вкладке «Сетевой адаптер» выберите «Максимум подключений», теперь введите требуемое число подключений и нажмите «ОК».
Если опция максимума соединений выбрана и отображается серым цветом, значит включена установка групповой политики лимита подключений и применена на сервере узла сеанса удаленного рабочего стола. Вы можете также установить максимальное число разрешенных одновременных подключений, применяя установку групповой политики лимита числа подключений. Эта установка групповой политики находится в и может быть изменена с помощью редактора локальных групповых политик или консоли управления групповыми политиками (GPMC). Установка групповой политики имеет преимущество над установкой, примененной в конфигурации узла сеанса удаленного рабочего стола.
Multiple RDP (Remote Desktop) sessions in Windows 10
To have concurrent user sessions working in Windows 10, you need to make small changes to termsrv.dll file. This file is located in C:\Windows\System32 folder.
Before modifying termsrv.dll for the first time, you need to take ownership and assign yourself full permissions.
You also need to stop Remote Desktop service (TermService) if it’s running.
DLL files can be modified using any HEX Editor (for example Tiny Hexer). You can do this yourself by replacing strings shown below, or just download patched versions from this page.
Windows 10 x64 v1809 — October 2018 Update
Windows 10 October 2018 Update (1809) updates termsrv.dll to version 10.0.17763.1. To get back concurrent remote desktop connections, the make the following changes:
Find:
39 81 3C 06 00 00 0F 84 7F 2C 01 00
replace with:
B8 00 01 00 00 89 81 38 06 00 00 90
The patched version can be download from here. The original, v10.0.17763.1 file can be found here.
Older Windows 10 versions
——————————————————————————————————————————
Windows 10 x64 v1803 — Spring 2018 Update (March 2018)
Windows 10 Spring 2018 Update (1803) updates termsrv.dll to version 10.0.17134.1. To get back concurrent remote desktop connections, make the following changes:
Find:
8B 99 3C 06 00 00 8B B9 38 06 00 00
replace with:
B8 00 01 00 00 89 81 38 06 00 00 90
The patched version can be download from here. The original, v10.0.17134.1 file can be found here.
——————————————————————————————————————————
Windows 10 Fall Creators Update (1709 — Redstone 3)
Updates termsrv.dll to version 10.0.16299.15. To get back concurrent remote desktop connections, make the following changes:
Find:
39 81 3C 06 00 00 0F 84 B1 7D 02 00
replace with:
B8 00 01 00 00 89 81 38 06 00 00 90
The patched version can be download from here. The original, v10.0.16299.15 file can be found here.
——————————————————————————————————————————
Windows 10 x64 v1703 — Creators Update (April 2017)
Windows 10 Creators Update (1703 — Redstone 2) updates termsrv.dll to version 10.0.15063.0. To get back concurrent remote desktop connections, make the following changes:
Find:
39 81 3C 06 00 00 0F 84 53 71 02 00
replace with:
B8 00 01 00 00 89 81 38 06 00 00 90
The patched version can be download from here. Original, v10.0.15063.0 file can be found here.
——————————————————————————————————————————
Windows 10 x64 Threshold 2 (November 2015)
Windows 10 Fall Update (also called «Threshold Wave 2 Update») updates termsrv.dll to version 10.0.10586.0. To get back concurrent remote desktop connections, make the following changes:
Find:39 81 3C 06 00 00 0F 84 3F 42 02 00
replace with:B8 00 01 00 00 89 81 38 06 00 00 90
The patched version can be download from here. Original, v10.0.10586.0 file is here.
——————————————————————————————————————————
Windows 10 x64 RTM (August 2015)
termsrv.dll file version 10.0.10240.16384.
In termsrv.dll find:39 81 3C 06 00 00 0F 84 73 42 02 00
and replace it with:B8 00 01 00 00 89 81 38 06 00 00 90
The patched version can be downloaded from here. The original, untouched version of termsrv.dll v10.0.10240.16384 can be downloaded from here.
Option 2 — RDP Wrapper
Instead of modifying termsrv.dll file you can use RDP Wrapper which acts as a middleman between Terminal Services and Service Control Manager.
This way you don’t need to touch termsrv.dll file. Actually, if you already modified your termsrv.
dll file, you need to revert to the original version before using this method.
Download and extract RDPWrap-v1.6.1.zip (or newer), then run install.bat as admin. After installation is completed, run RDPConfig.exe. If all items under Diagnostics are green, you should be good to go.
If «Listener state» is «Listening «, you will need to update the wrapper’s configuration (.ini) file.
With the latest version of RDP Wrapper you no longer need to update rdpwrap.ini manually. Simply run update.bat and everything will be done automatically.
If update.bat doesn’t add support to your Windows version, try checking Open Issues on RDP Wrapper GitHub page. You may find how to manually update rdpwrap.ini until official support is added.
May 2017Windows 10 64bit
IV. Часто задаваемые вопросы по теме статьи (FAQ)
Не работает терминальный сервер в Windows 10
Если у вас изначально не заработал терминальный сервер на windows 10 и количество rdp подключений ограничено одним. Либо если у вас после обновление сломался терминальный доступ, то давайте разбираться, что с этим делать.
Для начала запустите утилиту RDPConf.exe и посмотрите ее вывод.
Значение listener state намекает на то, что у нас проблемы и rdp wrapper не работает. Проблема тут в том, что практически под каждую версию Windows 10 нужен свой файл конфигурации rdpwrap.ini. Так как автор давно забросил свою программу, автоматически эти конфигурации не обновляются. Их нужно либо писать самому, если понимаешь, как именно, либо искать где-то в интернете. Проще всего посмотреть в обсуждении проблем в репозитории на github https://github.com/stascorp/rdpwrap/issues.
Для того, чтобы на моей версии windows 10 заработал терминальный сервер, я пошел в указанный выше репозиторий и нашел там файл конфигурации под свою версию системы. Я взял содержимое этого файла и добавил его в существующий файл C:\Program Files\RDP Wrapper\rdpwrap.ini в самый конец.
После этого запустил еще раз RDPConf.exe.
Статус изменился на . Теперь нужно перезагрузить компьютер. После этого запустите утилиту RDPCheck.exe и убедитесь, что можно подключиться второй учетной записью к компьютеру.
Как починить rdpwrap после обновления windows
Если вы нигде не можете найти файл конфигурации rdpwrap.ini под вашу версию системы, то можно попробовать сделать следующий трюк. В некоторых случаях это помогает. По крайней мере у меня так иногда получалось.
Вам нужно найти рабочую конфигурацию под максимально близкую к вам версию. Далее просто в текстовом редакторе поменяйте указанную там версию на свою. Если разница в версиях не сильно большая, может помочь. Я видел в issues на гитхабе информацию о том, что получалось сразу же после поломки терминального доступа после очередного обновления, отредактировать конфиг под новую версию и все снова продолжало работать.
Так же в одном из обсуждений на github была предложена утилита с автоматическим обновлением rdpwrap.ini. Называется Automatic RDP Wrapper installer and updater — https://github.com/stascorp/rdpwrap/pull/859. Описание и инструкция по использованию есть внутри архива. Судя по отзывам, штука неплохая, работает. Если кратко, то пользоваться так:
- Скачиваем архив
- Распаковываем в Program Files/RDP Wrapper
- От имени администратора запускаем Program Files/RDP Wrapper/autoupdate.bat
- Проверяем конфигурацию через RDPConf.exe и пробуем подключаться.
В целом про превращение windows 10 в сервер терминалов для одновременного подключения и работы нескольких пользователей по rdp у меня все. Все очень легко и просто, можно использовать по необходимости для решения прикладных задач.
Является ли создание сервера терминалов из Windows 10 нарушением лицензии?
Однозначно, да. У Microsoft есть отдельный продукт и отдельная программа лицензирования для работе в терминале. И все это стоит немалых денег. Так что создавая терминал из windows 10 вы точно нарушаете условия лицензионного соглашения.
Автор RDP Wrapper забросил свою программу?
Судя по всему, да. Обновлений давно не было. Меняются только конфигурационные файлы rdpwrap.ini, которые обновляет сообщество. Сама программа при этом не обновляется.
Можно ли не обновлять систему, чтобы не сломать терминальный доступ?
Я не рекомендую так делать. В настоящее время это очень опасно. В протоколе rdp регулярно находят уязвимости, через которые на ваш компьютер может попасть, к примеру, шифровальщик. Необходимо учитывать эти риски и время от времени обновляться, либо полностью закрывать несанкционированный доступ к компьютеру.
Почему RDP на Windows 7/10 не работает для нескольких пользователей
Это решение компании Microsoft, которое основывается на приобретении платных лицензий на каждого подключающегося в таком режиме пользователя. А продаются такие лицензии только для серверных операционных систем. Но для домашних пользователей выход есть и он хорошо показал себя на практике. Главное понять, что в дальнейшем делать с моральным стыдом и угрызениями совести, поскольку такая схема идет вразрез с интересами вышеназванной корпорации. Знакомьтесь с решением, которые поможет-таки организовать сервер терминалов на Windows 7 и 10 в многопользовательском режиме. Это RDP Wrapper Library. Оно прекрасно подойдет для небольшого офиса, где количество рабочих мест около десятка. Данное ПО очень простое в настройке, что всегда хорошо воспринимается техническими специалистами на местах. Есть информация на форумах, что даже Home версии Windows поддерживаются, но я лично не проверял. Давайте переходить к делу и распаковывать скачанный архив. В нем мы видим следующее.
Где:
Рекомендую сразу распаковывать архив в рабочий каталог, чтобы потом не переносить файлы по двадцать раз.
Critical Considerations
Number one is that Microsoft wants you to use a Windows Server license instead of a Windows client license if you want to allow multiple RDP connections. This leads us to believe that the Windows OS does not technically lack any ability to be able to handle multiple RDP connections. Technically, it all comes down to the available system resources.
A typical RDP connection only requires 150-200 MBs of RAM per RDP session. If your system has the available RAM, you can allow multiple remote sessions using either one of the following methods stated below.
Secondly, we came across several websites that give a method to allow multiple RDP connections using the Group Policy editor by reconfiguring the “Restrict Remote Desktop Services user to a single Remote Desktop Services session” policy. Note that this method only works on Windows Servers.
Hence, do not waste your time editing the Group Policy, as we have already tested it out for you.
Thirdly, only the Professional and Enterprise Windows editions support RDP connections. If you have a Windows Home edition, then learn how to enable RDP or use the first method (RDPWrapper) to allow multi-user remote connection.
That being said, there is no native, straightforward method to allow multiple RDP connections on a client Windows PC. You either need to use a third-party utility or manipulate critical Windows files to enable multi-user RDP connection. Therefore, it is advised that you create a system restore point before proceeding forward with any of the two methods.