В ОС Windows 8 / 8.1, как и предыдущих версиях клиентских ОС Microsoft, поддерживается только одно одновременное входящее RDP-подключение. Это означает что к компьютеру Windows 8 через удаленный рабочий стол может одновременно подключиться только один пользователь (одна сессия), локальная или удаленная. В большинстве случаев этого достаточно, но иногда хотелось бы иметь возможность одновременной работы сразу нескольких пользователей в собственных сессиях. Хорошим примером может быть компьютер в роли Media Center, когда в консольной сессии воспроизводится видео, и одновременно необходимо удаленно поработать с системой без прерывания видео на TV.
При попытке открыть вторую RDP-сессию к компьютеру с Windows 8, появляется сообщение о том, что уж в системе уже залогинен другой пользователь и его сессия может быть завершена.
Так, например, в серверной версии Windows поддерживаются два одновременных административных подключения с индивидуальными сессиями (в случае организации на базе Windows Server терминального сервера RDS , это число может быть еще большим).
Тем не менее, на просторах интернета можно найти специальный патч, позволяющий обойти это ограничение. Благодаря этому патчу несколько пользователей смогут одновременно подключиться по RDP к компьютеру с Windows 8 / Windows 8.1.
Итак, патч предполагает собой замену оригинального системного файла %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\ (с заменой).
После замены файла запустите службу Remote Desktop Services и попытайтесь создать две RDP сессии с пропатченной машиной под разными учетными записями. Если вы все сделали правильно, должны открыться две независимые сессии удаленного рабочего стола.
В качестве решения, устойчивого к замене файла termsrv.dll при установке обновлений Windows, следует использовать открытое Open Source решение RDP Wrapper Library (доступен на GitHub), которое не правит файл termsrv.dll, и является прослойкой между службой Terminal Services и SCM. Подробнее об использовании RDP Wrapper Library можно почитать тут.