Кілька одночасних RDP сесій користувачів в Windows 10

Віддалені користувачі можуть підключатися до своїх комп'ютерів Windows 10 через службу віддалених робочих столів (RDP) в редакціях Pro і Enterprise (але не в Home / Single Language). Але є обмеження на кількість одночасних RDP сесії - допускається одночасна робота тільки одного віддаленого користувача. Якщо ви спробуєте відкрити другу RDP сесію, з'явиться попередження з запитом відключити сеанс першого користувача.

У систему увійшов інший користувач. Якщо ви продовжите, він буде відключений. Ви все одно хочете увійти в систему?

В англійській версії попередження таке:

Another user is signed in. If you continue, they'll be disconnected. Do you want to sign in anyway?

Розглянемо основні обмеження на використання служби віддаленого робочого столу в Windows 10 (і всіх попередніх десктопних версіях Windows):

  1. Ви можете віддалено підключитися через RDP тільки до старших редакціям Windows (Professional і вище). У домашніх редакціях (Home) RDP доступ заблокований.
  2. Можливе лише одне одночасне RDP підключення. При спробі запустити другу RDP-сесію, користувачеві пропонується завершити існуюче підключення.
  3. Якщо користувач працює за консоллю комп'ютера (локально), то при віддаленому підключенні по RDP, його локальний сеанс буде відключений (заблокований). Правильно і зворотне твердження: віддалений RDP сеанс примусово завершується, якщо користувач авторизується на консолі системи.

По суті, обмеження на кількість одночасних RDP підключень є не технічним, а скоріше ліцензійним. Таким чином Microsoft забороняє створювати термінальний RDP сервер на базі робочої станції для одночасної роботи декількох користувачів. Логіка Microsoft проста: якщо вам потрібен термінальний сервер - купите ліцензію Windows Server, ліцензії RDS CAL, встановіть і налаштуйте роль Remote Desktop Session Host (RDSH).

Хоча з технічної точки зору будь-яка редакція Windows при наявності достатньої кількості оперативної пам'яті може обслуговувати одночасну роботу кількох десятків віддалених користувачів. В середньому на одну RDP сесію користувача без урахування запускаються потрібно 150-200 Мб пам'яті. Тобто максимальну кількість одночасних RDP сесій в теорії обмежується тільки ресурсами комп'ютера.

Ми розглянемо два способи відключити обмеження на кількість одночасних RDP підключень до Windows 10: за допомогою програми RDP Wrapper і за допомогою редагування файлу termsrv.dll.

зміст:

  • RDP Wrapper: дозволити кілька RDP сеансів в Windows 10
  • Чи не працює RDP Wrapper в Windows 10
  • Модифікація файлу termsrv.dll для зняття обмежень RDP в Windows 10

важливо. Спочатку в найпершій версії статті основним робочим варіантом, що дозволяє зняти обмеження на кількість одночасних RDP підключень користувачів в Windows був спосіб модифікації і підміни файлу termsrv.dll в папці% SystemRoot% \ System32. Однак при установці нового билда Windows 10 або деяких оновлень безпеки, цей файл оновлюється.

В результаті доводиться кожен раз редагувати цей файл Hex редактором, що досить утомливо. Тому в якості основного способу організації безкоштовного термінального сервера на клієнтської Windows 10 варто вважати утиліту RDP Wrapper Library.
Примітка. Модифікації системи, описані в цій статті, вважаються порушенням ліцензійної угоди Windows і ви можете виконувати їх на свій страх і ризик.

RDP Wrapper: дозволити кілька RDP сеансів в Windows 10

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). Судячи з інформації на сторінці розробника, підтримуються всі версії Windows. Windows 10 підтримується аж до 1809 (хоча в 1909 теж все чудово працює, див. Нижче).

Архів 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 всі елементи пофарбовані в зелений колір.

Запустіть RDPCheck.exe і спробуйте відкрити другу RDP сесію (або підключіться декількома сесіями RDP з віддалених комп'ютерів) Все вийшло! Тепер ваша Windows 10 дозволяє одночасно підключатися по RDP відразу двом віддаленим користувачам.

Утиліта RDPWrap підтримується у редакціях Windows: Windows Vista, Windows 7, Windows 8, Windows 8.1 і Windows 10. Таким чином з будь-якої клієнтської версії Windows можна зробити сервер терміналів.

Також з цікавих можливостей RDP Wrapper можна виділити:

  • опція Hide users on logon screen дозволяє приховати список користувачів на екрані вітання;
  • При відключенні опції Single session per user - будуть дозволені кілька одночасних RDP сесій під одним обліковим записом (встановлюється параметр реєстру fSingleSessionPerUser = 0 в гілці HKLM \ SYSTEM \ CurrentControlSet \ Control \ Terminal Server \ fSingleSessionPerUser).
  • RDP Port - можна змінити номер порту віддаленого робочого столу з стандартного TCP 3389 на будь-який інший;
  • У секції Session Shadowing Mode ви можете вибрати режим тіньового підключення до робочого столу користувачів Windows 10.

Чи не працює RDP Wrapper в Windows 10

Розглянемо, що робити, якщо у вас в Windows 10 при встановленій утиліті RDP Wrapper не виходить використовувати кілька RDP підключень ...

У моєму випадку утиліта RDConfig у вікні статусу показувала [not supported]. Проблема була в тому, що на комп'ютері відсутній прямий доступ в Інтернет і програма не змогла завантажити з GitHub актуальну версію файлу rdpwrap.ini з настройками для останніх версій Windows (як вручну оновити rdpwrap.ini див. Нижче).

скачайте файл rdpwrap.ini з ресурсу розробника і помістіть його в каталог установки (C: \ Program Files \ RDP Wrapper \ rdpwrap.ini). Перезапустіть службу TermService і переконайтеся, що напис [not supported] змінилася на [fully supported].

Якщо утиліта RDP Wrapper не працює після оновлення файлу rdpwrap.ini, можливо у вас нова версія Windows 10. Спробуйте завантажити готовий ini файл для вашої версії Windows 10 тут (https://github.com/fre4kyC0de/rdpwrap) або для Windows 10 1909 (10.0.18363.476) тут - rdpwrap_10.0.18363.476_1909.zip.

Також при проблемах з RDPWrap ви можете відкрити гілку в https://github.com/stascorp/rdpwrap/issues. Тут же можна знайти актуальні файли rdpwrap.ini до моменту поновлення в офіційному репозиторії.

Щоб замінити файл rdpwrap.ini:

  1. Зупиніть службу termservice: get-service termservice | stop-service
  2. Замініть файл rdpwrap.ini в каталозі C: ​​\ Program Files \ RDP Wrapper \;
  3. Перезавантажте комп'ютер;
  4. Після перезавантаження запустіть RDPConf і переконайтеся, що всі статуси стали зеленими.

Якщо після установки оновлень безпеки або після апгрейда билда Windows 10, RDP Wrapper не працює, перевірте, можливо в секції Diagnostics присутній напис Listener state: Not listening.

Спробуйте оновити ini файл "C: \ Program Files \ RDP Wrapper \ rdpwrap.ini» скриптом update.bat (Або вручну) і перевстановити службу:

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).

Перезавантажте комп'ютер для застосування налаштувань.

Модифікація файлу termsrv.dll для зняття обмежень RDP в Windows 10

Щоб прибрати обмеження на кількість RDP підключень користувачів в Windows 10 без використання rdpwraper, можна замінити файл 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

Має з'явитися повідомлення: «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 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

Перш ніж йти далі, вам потрібно дізнатися вашу версію (білд) Windows 10. Найпростіше це зробити за допомогою наступної команди PowerShell:

Get-ComputerInfo | select WindowsProductName, WindowsVersion

У моєму випадку встановлена ​​Windows 10 білд 1909.

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

Версія Windows 10знайти рядокЗамінити на
Windows 10 x64 190939 81 3C 06 00 00 0F 84 5D 61 01 00

B8 00 01 00 00 89 81 38 06 00 00 90

Windows 10 x64 190339 81 3C 06 00 00 0F 84 5D 61 01 00
Windows 10 x64 180939 81 3C 06 00 00 0F 84 3B 2B 01 00

Windows 10 x64 18038B 99 3C 06 00 00 8B B9 38 06 00 00

Windows 10 x64 170939 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.

Готовий пропатченний файл termsrv.dll для Windows 10 Pro RTM x64 можна скачати тут: termsrv_windows_10_x64_10240.zip

Якщо щось пішло не так, і у вас виникнуть проблеми зі службою RDP, зупиніть службу і замініть модифікований файл termsrv.dll вихідної версією:

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

Перевага способу включення декількох RDP сесій в Windows 10 шляхом заміни файлу termsrv.dll в тому, що на нього не реагують антивіруси. На відміну від утиліти RDPWrap, яку багато антивірусів вважають Malware / HackTool / Trojan. Основний недолік - вам доведеться вручну правити файл при кожному оновленні билда Windows 10 (або при оновленні версії файлу termsrv.dll в рамках щомісячних кумулятивних оновлень).