07 марта 2017

Несколько RDP сессий к Windows xp, 7, 8,10

По умолчанию в не серверных версиях windows можно выполнить только одно подключение к удаленному рабочему столу, при этом работа текущего пользователя обязательно блокируется.

Исправляем это недоразумение.

Обязательно сохраним оригинальный файл termsrv.dll. Запустим командную строку от Администратора и выполним
copy c:\Windows\System32\termsrv.dll termsrv.dll_old
Затем смотрим вашу версию. Правый клик на файле c:\Windows\System32\termsrv.dll и выберем свойства.


Скачиваем измененный файл соответствующий вашей версии

Windows 8.1 (64bit)
v6.3.9600.16384
от v6.3.9600.16384 до v6.3.9600.17095
от v6.3.9600.17095 до v6.3.9600.17415

Windows 10 x64

v10.0.10240.16384 
до v10.0.10586.0 

Если хочется все исправить своими руками, то копируем свой файл  termsrv.dll из папки c:\Windows\System32\ на рабочий стол. Открываете его любым hex редактором, например этим бесплатным HxD. И заменяете байты в указанной строчке.
В первой колонке значение, которое должно быть, во второй оригинальное.

Windows 7 SP1 64bit:
173C0: B8 8B
173C1: 00 87
173C2: 01 38
173C3: 00 06
173C5: 90 00
173C6: 89 39
173C8: 38 3C
173CC: 90 0F
173CD: 90 84
173CE: 90 EB
173CF: 90 C2
173D0: 90 00
173D1: 90 00
176FA: 00 01
5AD7E: EB 74
Для Windows 8.1 (64bit) заменяем целиком строку
 
в v6.3.9600.16384
строчку
8B 81 38 06 00 00 39 81 3C 06 00 00 0F 84 1B 70 00 00
на
B8 00 01 00 00 89 81 38 06 00 00 90 90 90 90 90 90 90

в 6.3.9600.16384 to 6.3.9600.17095
строчку
39 81 3C 06 00 00 0F 84 9E 31 05 00
на
B8 00 01 00 00 89 81 38 06 00 00 90

6.3.9600.17095 to 6.3.9600.17415
строчку
39 81 3C 06 00 00 0F 84 D3 1E 02 00
на
B8 00 01 00 00 89 81 38 06 00 00 90
 Воспользуемся инструментом замены с типом шестнадцатеричные значения



После замены сохраняете изменения.

Если испытываете трудности с правами доступа, то открываете свойства, вкладку безопасность, кнопка дополнительно. И меняете владельца на себя. Применяете. После этого сможете менять разрешения для групп и пользователей.



Далее останавливаете службу удаленного рабочего стола


Заменяем файл termsrv.dll на скаченный или измененный.

Еще нужно изменить значение ключа в реестре HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\fSingleSessionPerUser на 0!

И снова запускаем службу!

Подключаемся и радуемся! Теперь локального пользователя не выкидывает из системы!

Для Windows XP
1) Редактируем файл
termsrv.dll (SP2 5.1.2600.2180) 295,424 bytes
128BB: 75 -> 74
217D3: 8B -> 33
217D4: C7 -> C0
2192D: 8B -> 33
2192E: C7 -> C0
225B7: 54 -> 20
termsrv.dll (SP3 5.1.2600.5512) 295,424 bytes
22A17: 74 -> 75
22A69: 7F -> 90
22A6A: 16 -> 90
2) Заменять файл в директории  C:\Windows\System32\ нужно в безопасном режиме, поскольку по умолчанию включена защита системных файлов (System File Protection). Для этого перезагрузите компьютер с зажатой F8, выберите безопасный режим.
3) Добавить ключи реестра
[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Terminal Server\Licensing Core]
EnableConcurrentSessions”=dword:00000001
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon]
EnableConcurrentSessions”=dword:00000001
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon]
AllowMultipleTSSessions”=dword:00000001


4) Далее Пуск -> Выполнить, gpedit.msc. В окне редактора групповой политики Конфигурация компьютера -> Административные шаблоны -> Компоненты Windows -> Служба терминалов. Включите Ограничение количества подключений и установите количество подключений равное 3 или более.
5) Перезагружайтесь и подключайтесь!

Напоследок, расскажу про одну очень удобную утилиту: UniversalTermsrvPatch (66.3 KB). Поддерживает 32-х и 64-разрядные системы, версии Windows XP SP2 SP3; Vista SP1 SP2; Windows 7 , Windows Server 2008 SP1/SP2. 
 
 
Принцип действия крайне простой. Запускаете, она сама определяет версию файла termsrv.dll, нажимаете кнопку Patch, после чего перезагружаете компьютер и работаете.