Декілька одночасних RDP сесій в Windows 7, 8, 10 та 11

2024-05-18 03:07
7004
Ця стаття на мовах: UA / RU

t.me


Стаття у розділах:

Десктопні ОС Програмне забезпечення

Зміст

Якщо ви спробуєте відкрити другу RDP сесію, з'явиться попередження із запитом відключити сеанс першого користувача.

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

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

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

Обмеження на кількість RDP сесій у Windows

У всіх десктопних версіях Windows 10 і 11 є ряд обмежень на використання служб віддаленого робочого столу:

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

Обмеження на кількість одночасних RDP підключень у Windows є не технічним, а програмним і ліцензійним. Таким чином, Microsoft забороняє створювати термінальний RDP сервер на базі робочої станції для одночасної роботи кількох користувачів.

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

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

У цій статті ми покажемо три способи прибрати обмеження на кількість одночасних RDP підключень у Windows 10 і 11:

  1. Використання RDP Wrapper.
  2. Модифікація системного файлу termsrv.dll.
  3. Оновлення до редакції Windows 10/11 Enterprise for virtual desktops (multi-session).

Примітка. Всі модифікації операційної системи, описані в цій статті, вважаються порушенням ліцензійної угоди Windows, і ви можете використовувати їх на свій страх і ризик. Перш ніж продовжити, перевірте, що в налаштуваннях Windows ввімкнено протокол Remote Desktop.

  1. Відкрийте панель налаштувань: Settings -> System -> Remote Desktop.
  2. Увімкніть опцію Enable Remote Desktop.

За замовчуванням RDP використовує порт 3389, але при необхідності його можна замінити на будь який вільний порт, при цьому звертаючись з іншого комп'ютера, обов'язково після hostname або  ip-адреси необхідно вказати нестандартний порт через двокрапку. Наприклад: 192.168.0.200:4561

Або скористайтеся класичною панеллю керування:

  1. Виконайте команду SystemPropertiesRemote.
  2. Перейдіть на вкладку Remote Settings (Віддалений доступ).
  3. Увімкніть опцію Allow remote connection to this computer (Дозволити віддалені підключення до цього комп'ютера).

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

Open-source утиліта RDP Wrapper Library дозволяє використовувати конкурентні RDP сесії в Windows 10/11 без необхідності заміни системного файлу termsrv.dll.

RDP Wrapper функціонує як прошарок між менеджером управління службами (Service Control Manager, SCM) та службою терміналів (Remote Desktop Services). Вона не вносить змін до файлу termsrv.dll, а просто завантажує його з зміненими параметрами.

Важливо. Перед встановленням RDP Wrapper переконайтеся, що у вас використовується оригінальна (не змінена) версія файлу termsrv.dll. Інакше RDP Wrapper може працювати нестабільно або взагалі не запускатися. Завантажити RDP Wrapper можна з репозиторію GitHub:

(остання доступна версія RDP Wrapper Library v1.6.2). Утиліта не оновлюється з кінця 2017 року, але її можна використовувати на всіх версіях Windows 10 і 11. Для роботи утиліти в сучасних версіях Windows достатньо оновити конфігураційний файл rdpwrap.ini.

Більшість антивірусів розпізнають RDP Wrapper як потенційно небезпечну програму. Наприклад, вбудований антивірус Microsoft Defender класифікує її як PUA:Win32/RDPWrap (Potentially Unwanted Software) з низьким рівнем загрози. Якщо ваш антивірус блокує запуск RDP Wrapper, необхідно додати його до виключень

Архів 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.

Відразу після встановлення утиліта, скоріш за все, покаже, що RDP Wrapper запущено (Installed, Running, Listening), але не працює. Зверніть увагу на червоний напис, який повідомляє, що поточна версія Windows 10 (ver. 10.0.19041.1949) не підтримується ([not supported]).

Причина в тому, що в конфігураційному файлі rdpwrap.ini відсутня секція з налаштуваннями для вашої версії (білда) Windows. Актуальну версію файлу rdpwrap.ini можна завантажити тут:

.

Скопіюйте вміст цієї сторінки у файл «C:\Program Files\RDP Wrapper\rdpwrap.ini» вручну. Або завантажте файл за допомогою PowerShell командлета Invoke-WebRequest (попередньо потрібно зупинити службу Remote Desktop):

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

Тепер спробуйте встановити декілька підключень одночасно за допомогою RDP сесій з цим комп'ютером під різними користувачами (скористуйтесь  будьяким RDP клієнтом: mstsc.exe, RDCMan, mRemoteNG и т.д.).

Можете перевірити, що на комп'ютері активні одночасно дві RDP сесії (або більше) за допомогою команди:

qwinsta

rdp-tcp#0         user1                 1  Active

rdp-tcp#1         user2                 2  Active

Утиліта RDPWrap підтримується у всіх версіях Windows, включаючи домашні редакції Windows Home, що дозволяє перетворити будь-яку клієнтську версію Windows на повноцінний сервер терміналів.

В інтерфейсі RDP Wrapper доступні такі опції:

  • Enable Remote Desktop — увімкнути або вимкнути Remote Desktop у Windows.
  • RDP Port — змінити стандартний номер порту віддаленого робочого столу TCP 3389.
  • Hide users on logon screen — приховати список користувачів на екрані привітання.
  • Single session per user — дозволити кілька одночасних RDP сесій під одним обліковим записом користувача. Ця опція встановлює параметр реєстру fSingleSessionPerUser = 0 у гілці HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server. Також цей параметр можна налаштувати через опцію GPO Restrict Remote Desktop Services to a single Remote Desktop Services session у розділі Computer Configuration > Administrative Templates > Windows Components > Remote Desktop Services > Remote Desktop Session Host > Connections.
  • У секції Session Shadowing Mode ви можете налаштувати режим тіньового підключення до робочого столу користувачів Windows.

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

Не працює RDP Wrapper в Windows

Іноді утиліта RDP Wrapper не працює належним чином, і ви не можете використовувати кілька RDP-підключень.

Під час встановлення оновлень Windows може оновитися версія файлу termsrv.dll. Якщо в файлі rdpwrap.ini відсутній опис для вашої версії Windows, це означає, що RDP Wrapper не може застосувати необхідні налаштування. У такому випадку в вікні RDP Wrapper Configuration буде вказаний статус [not supported].

Щоб вирішити цю проблему, оновіть файл rdpwrap.ini, дотримуючись описаних вище інструкцій. Якщо RDP Wrapper все одно не працює після оновлення файлу rdpwrap.ini, спробуйте відкрити файл rdpwrap.ini і знайти в ньому опис для вашої версії Windows.

Як визначити, чи є підтримка вашої версії Windows у конфігураційному файлі rdpwrapper? На знімку екрана нижче показано, що для моєї версії Windows 11 (10.0.22621.317) є дві секції з описами:

[10.0.22621.317]

...

[10.0.22621.317-SLInit]

...

Якщо в конфігураційному файлі rdpwrap відсутня відповідна секція для вашої версії Windows, спробуйте знайти рядки rdpwrap.ini для вашого білда в мережі. Потім додайте знайдені рядки в самий кінець файлу.

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

Спробуйте оновитьи ini файл, та запустіть перевстановлення служби:

rdpwinst.exe -u
rdpwinst.exe -i

Буває ,коли при спробі другого підключення ріж іншим користувачем у вас з'являється напис:

Кількість дозволених підключень до цього комп'ютера обмежено і всі підключення вже використовуються. Спробуйте підключитися пізніше або зверніться до системного адміністратора.

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 і внести зміни в наступні параметри:

  1. Відкрийте редактор групових політик, натиснувши комбінацію клавіш Win+R, введіть gpedit.msc і натисніть Enter.
  2. Перейдіть до розділу Конфігурація комп'ютера -> Адміністративні шаблони -> Компоненти Windows -> Служби віддалених робочих столів -> Вузол сеансів віддалених робочих столів -> Підключення.
  3. Знайдіть політику “Обмежити кількість підключень” і включіть її.
  4. Змініть значення цієї політики на 999999.

Це дозволить вам збільшити обмеження кількості одночасних підключень до віддаленого робочого столу на вашому комп’ютері.

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

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

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

icacls c:\Windows\System32\termsrv.dll /grant Administrators:F

Повинно з’явитися повідомлення: 

“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, виконайте команду winver або наступну команду PowerShell:

Get-ComputerInfo | select WindowsProductName, WindowsVersion

У нашому випадку встановлена Windows 11 білд 23h2

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

Версія WindowsЗнайти строкуЗамінить на
Windows 11 23H239 81 3C 06 00 00 0F 84 E1 AA 01 00

 

 

 

 

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

 

Windows 11 22H239 81 3C 06 00 00 0F 84 75 7A 01 00
Windows 10 22H239 81 3C 06 00 00 0F 84 85 45 01 00
Windows 11 RTM ( 21H2 22000.258)39 81 3C 06 00 00 0F 84 4F 68 01 00
Windows 10 x64 21H239 81 3C 06 00 00 0F 84 DB 61 01 00
Windows 10 x64 21H139 81 3C 06 00 00 0F 84 2B 5F 01 00
Windows 10 x64 20H239 81 3C 06 00 00 0F 84 21 68 01 00
Windows 10 x64 200439 81 3C 06 00 00 0F 84 D9 51 01 00
Windows 10 x64 190939 81 3C 06 00 00 0F 84 5D 61 01 00
Windows 10 x64 190339 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 11 x64 23H2 226315.3593 (версія файлу termsrv.dll – 10.0.19041.1949) потрібно відкрити файл termsrv.dll у Tiny Hexer. Потім знайдіть рядок:

39 81 3C 06 00 00 0F 84 E1 AA 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

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

У цій статті ми розглянули способи, що дозволяють зняти обмеження на кількість одночасних RDP підключень користувачів, і запустити безкоштовний термінальний сервер на клієнтській Windows 10 або 11. Кожен із цих способів має свої переваги та недоліки. Який із них використовувати – вирішувати вам.


Сподобалась стаття? Подякуйте автору