Сервісний центр VPSGroup ремонт комп'ютерної техніки, заправка картриджів, ремонт оргтехніки, Київ, Виставковий центр, Васильківська, 55

Виправляємо недоліки RDP за допомогою RDP Wrapper Library.

У настільних операційних систем Microsoft є деякі обмеження, пов'язані з роботою служби віддалених робочих столів. Так по-перше, підтримка серверної частини (RDP Host) є тільки в старших редакціях Windows (не нижче Professional). У домашніх редакціях цей функціонал відключений, тому підключитися до молодших версій Windows по RDP неможливо.

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

Обійти ці обмеження дозволить проект RDP Wrapper Library by Stas`M. RDP Wrapper працює як прошарок між менеджером служб (Service Control Manager, SCM) і службою віддалених робочих столів. При цьому, на відміну від інших рішень подібного роду, він не піддає змінам файл termsrv.dll (бібліотека, яка використовується службою Remote Desktop Services), що дозволяє не побоюватися оновлень Windows.

Судячи по офіційному сайту, проект активно живе і розвивається. На даний момент викладена версія 1.5 від 2014.12.11, для якої заявлена ​​підтримка новітніх ОС, включаючи Windows 10 Technical Preview. Також доступні вихідні коди, так що при бажанні можна самостійно зібрати проект.

Завантажити RDP Wrapper можна зі сторінки програми в репозиторії GitHub.В архів входять наступні компоненти:

• RDPWinst.exe - інсталятор, за допомогою якого проводиться установка і видалення RDP Wrapper;
• RDPConf.exe - утиліта для настройки параметрів підключення;
• RDPCheck.exe - утиліта для локальної перевірки роботи RDP;
• install.bat і uninstall.bat - bat-файли для зручності установки \ видалення програми.



Для установки програми треба відкрити командний рядок з правами адміністратора, перейти в директорію з розпакованими файлами і запустити install.bat. Все інше, включаючи настройку винятків на фаєрвол, установник зробить сам.



Додатково можна запустити утиліту RDPConf .exe, яка дозволяє включати \ відключати доступ, а також налаштовувати основні параметри підключення (порт, кількість сесій на користувача, тип аутентифікації та ін.).



Ну і як перевірки я відкрив на комп'ютер зі встановленою Windows 7 Home Basic дві RDP-сесії для двох різних користувачів.



Що ще можна сказати. Проект однозначно корисний, в деяких ситуаціях навіть незамінний. З мінусів же - використовуючи RDP Wrapper ви швидше за все порушуєте ліцензійну угоду.

Доповнення 04.05.2019.

Для коректної роботи на Windows 10 1809 потрібно оновити файл конфігурації rdpwrap.ini. У нього треба додати такі рядки:

[10.0.17763.292]
; Patch CEnforcementCore :: GetInstanceOfTSLicense
LocalOnlyPatch.x86 = 1
LocalOnlyOffset.x86 = AFAD4
LocalOnlyCode.x86 = jmpshort
LocalOnlyPatch.x64 = 1
LocalOnlyOffset.x64 = 77A11
LocalOnlyCode.x64 = jmpshort
; Patch CSessionArbitrationHelper :: IsSingleSessionPerUserEnabled
SingleUserPatch.x86 = 1
SingleUserOffset.x86 = 4D665
SingleUserCode.x86 = nop
SingleUserPatch.x64 = 1
SingleUserOffset.x64 = 1322C
SingleUserCode.x64 = Zero
; Patch CDefPolicy :: Query
DefPolicyPatch.x86 = 1
DefPolicyOffset.x86 = 4BE69
DefPolicyCode.x86 = CDefPolicy_Query_eax_ecx
DefPolicyPatch.x64 = 1
DefPolicyOffset.x64 = 17F45
DefPolicyCode.x64 = CDefPolicy_Query_eax_rcx
; Hook CSLQuery :: Initialize
SLInitHook.x86 = 1
SLInitOffset.x86 = 5B18A
SLInitFunc.x86 = New_CSLQuery_Initialize
SLInitHook.x64 = 1
SLInitOffset.x64 = 1ABFC
SLInitFunc.x64 = New_CSLQuery_Initialize

І в кінець ini файлу додатково треба додати рядки:

[10.0.17763.292-SLInit]
bInitialized.x86 = CD798
bServerSku.x86 = CD79C
lMaxUserSessions.x86 = CD7A0
bAppServerAllowed.x86 = CD7A8
bRemoteConnAllowed.x86 = CD7AC
bMultimonAllowed.x86 = CD7B0
ulMaxDebugSessions.x86 = CD7B4
bFUSEnabled.x86 = CD7B8

bInitialized.x64 = ECAB0
bServerSku.x64 = ECAB4
lMaxUserSessions.x64 = ECAB8
bAppServerAllowed.x64 = ECAC0
bRemoteConnAllowed.x64 = ECAC4
bMultimonAllowed.x64 = ECAC8
ulMaxDebugSessions.x64 = ECACC
bFUSEnabled.x64 = ECAD0

В кінці файлу обов'язково порожній рядок.

Взято звідси: https://github.com/stascorp/rdpwrap/issues/699

.