В ОС 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%System32termsrv.dll (библиотека, используемая службой Remote Desktop Services).
Ссылки на модифицированную версию библиотеку termsrv.dll:
- Windows 8 – termsrv.dll-win8.zip
- Windows 8.1 — termsrv.dll-win8.1.zip
Перед заменой системной библиотеки создадим резервную копию файла termsrv.dll командой:
copy c:WindowsSystem32termsrv.dll termsrv.dll_old
Теперь, если что-то пойдет не так, всегда можно вернуться к начальной конфигурации, заменив текущий файл оригинальным termsrv.dll_old.
Скачайте архив с библиотекой для своей версии Windows.
В Windows 8 предварительно нужно изменить значение следующих ключей в ветке реестра HKLMSystemCurrentControlSetControlTerminal Server :
- fDenyTSConnections (DWORD) — 0 (ключ позволяет удаленно включить RDP на компьютере)
- fSingleSessionPerUser (DWORD) — 0
Эту же операцию можно выполнить из командной строки:
REG ADD "HKLMSYSTEMCurrentControlSetControlTerminal Server" /v fDenyTSConnections /t REG_DWORD /d 0 /f
REG ADD "HKLMSYSTEMCurrentControlSetControlTerminal Server" /v fSingleSessionPerUser /t REG_DWORD /d 0 /f
Затем переходим в каталог C:WindowsSystem32 , находим файл 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 можно почитать тут .