Прибираємо обмеження на кількість RDP сесій в Windows 8.1 / 8

В ОС Windows 8 / 8.1, як і попередніх версіях клієнтських ОС Microsoft, підтримується тільки одне одночасне входить RDP-підключення. Це означає що до комп'ютера Windows 8 через віддалений робочий стіл може одночасно підключитися тільки один користувач (одна сесія), локальна або віддалена. У більшості випадків цього достатньо, але іноді хотілося б мати можливість одночасної роботи відразу декількох користувачів у власних сесіях. Хорошим прикладом може бути комп'ютер в ролі Media Center, коли в консольної сесії відтворюється відео, і одночасно необхідно віддалено попрацювати з системою без переривання відео на TV.

Порада. Віддалений RDP доступ не працює в домашніх (Home) редакціях Windows, потрібно редакції Pro або Enterprise.

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

Another user is signed in. If you continue, they will be disconnected.

Порада. Попередньо у властивостях комп'ютері на вкладці Віддалений доступ (Remote) потрібно включити RDP доступ і додати облікові записи потрібних користувачів в локальну групу Remote Desktop Users. Локальним адміністраторам віддалений RDP доступ дозволений за замовчуванням. Після включення RDP доступу в властивості системи, Windows Firewall автоматично включає правила, що дозволяє вхідний трафік на порт 3389. Іноді наявність цього правила слід перевірити вручну.

Так, наприклад, в серверній версії Windows підтримуються два одночасних адміністративних підключення до індивідуальних сесіями (в разі організації на базі Windows Server термінального сервера RDS, це число може бути ще більшим).

Проте, на просторах інтернету можна знайти спеціальний патч, що дозволяє обійти це обмеження. Завдяки цьому патч кілька користувачів зможуть одночасно підключитися по RDP до комп'ютера з Windows 8 / Windows 8.1.

важливо. Використання даного патча, по суті, є порушенням ліцензійної угоди і умов використання продуктів Microsoft. Тому всі описані нижче операції ви виконуєте на свій ризик.

Отже, патч передбачає собою заміну оригінального системного файлу % SystemRoot% \ System32 \ termsrv.dll (Бібліотека, яка використовується службою Remote Desktop Services).

Посилання на модифіковану версію бібліотеку termsrv.dll:

  • Windows 8 - termsrv.dll-win8.zip
  • Windows 8.1 - termsrv.dll-win8.1.zip

Перед заміною системної бібліотеки створимо резервну копію файлу termsrv.dll командою:

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

Тепер, якщо щось піде не так, завжди можна повернутися до початкової конфігурації, замінивши поточний файл оригінальним termsrv.dll_old.

Скачайте архів з бібліотекою для своєї версії Windows.

У Windows 8 попередньо потрібно змінити значення наступних ключів в гілці реєстру HKLM \ System \ CurrentControlSet \ Control \ Terminal Server \:

  • fDenyTSConnections (DWORD) -0 (Ключ дозволяє віддалено включити RDP на комп'ютері)
  • fSingleSessionPerUser (DWORD) - 0

Цю ж операцію можна виконати з командного рядка:

REG ADD "HKLM \ SYSTEM \ CurrentControlSet \ Control \ Terminal Server" / v fDenyTSConnections / t REG_DWORD / d 0 / f
REG ADD "HKLM \ SYSTEM \ CurrentControlSet \ Control \ Terminal Server" / v fSingleSessionPerUser / t REG_DWORD / d 0 / f

Потім переходимо в каталог C: \ Windows \ System32, знаходимо файл termsrv.dll і відкриваємо його властивості.

За замовчуванням, власником цього файлу є TrustedInstaller і навіть у адміністратора немає прав на його заміну.

Перейдемо на вкладку Security і натиснемо кнопку Edit. У списку доступу знайдіть групу локальних адміністраторів і надайте їй повні права на файл (Full Control) І збережіть зміни.

Наступний крок перед заміною файлу бібліотеки, відкрити консоль управління службами (services.msc) І зупинити службу Remote Desktop Services.

Скопіюємо файл termsrv.dll з завантаженого архіву для своєї версії Windows в каталог % SystemRoot% \ System32 \ (З заміною).

Примітка. Архів для Windows 8.1 містить два файли 32_termsrv.dll і 64_termsrv.dll, для 32-х і 64-х бітної версії Windows 8.1 відповідно. Розпакуйте архів і перейменуйте файл для своєї версії системи в termsrv.dll

Після заміни файлу запустіть службу Remote Desktop Services і спробуйте створити дві RDP сесії з пропатченний машиною під різними обліковими записами. Якщо ви все зробили правильно, повинні відкритися дві незалежні сесії віддалених робочих столів.

Порада. Можливо буде потрібно перезавантаження комп'ютера. важливо! Використання пропатченний версії termsrv.dll має ряд недоліків. Головний з яких - при установці чергового оновлення Windows 8.1 / 8 цей файл може бути замінений. Відповідно, доведеться самостійно за допомогою HEX редактора патчить новий файл, або шукати в інтернеті готовий модифікований файл для вашого билда Windows.

В якості вирішення, стійкого до заміни файлу termsrv.dll при установці оновлень Windows, слід використовувати відкрите Open Source рішення RDP Wrapper Library (Доступний на GitHub), яка не править файл termsrv.dll, і є прошарком між службою Terminal Services і SCM. Детальніше про використання RDP Wrapper Library можна почитати тут.