Автозапуск приложения при входе на терминальный (RDS) сервер Windows

В Windows Server с ролью RDS (Remote Desktop Services) до версии 2016 можно было настроить автоматический запуск определенной программы при входе пользователя в свою RDP сессию через переменную окружения профиля пользователя. Имя программы (рабочей среды), которую нужно запускать вместо оболочки Windows можно было задать в свойствах пользователя на вкладке Environment (Среда) в поле Start the following program at logon (При входе в систему запускать следующую программу). Когда удаленный пользователь закрывает окно этой программы, RDS автоматически завершает сеанс пользователя. Такая-себе простая замена публикации приложений на RDS в виде RemoteApp.

Запуск программы при входе пользователя по RDP через переменную окружения пользователя

В Windows Server 2016 и выше использование этой опции для автозапуска определенной программы, назначенной пользователю на RDS перестало работать (а точнее, отключено по умолчанию). Вместо указанного приложение всегда открывается полноценный рабочий стол сервера.

Дело в том Microsoft изменила поведение Remote Connection Manager (RCM) в Windows Server 2016 и выше. В новых версиях RDS при входе пользователя служба RCM не запрашивает у контроллера домена настройки пользователя, заданные на вкладках Environment и Remote Desktop Services Profile (нахначенные приложения, путь к перемещаемому профили, домашняя папка), как это было в 2008 R2 и 2012/2012 R2. Таким образом заданные там настройки игнорируются и всегда открывается обычной рабочий стол сервера.

Значения этих параметров пользователя в AD хранятся в атрибуте userParameters .

Вместо этой опции Microsoft рекомендует настраивать автозапуск приложений в RDP сессии пользователя через групповые политики. Для этого нужно в редакторе GPO перейти в раздел User Configuration -> Policies -> Administrative Templates -> Windows Components -> Remote Desktop Services -> Remote Desktop Session Host -> Remote Session Environment.

  • Start a program on connection = Enabled , здесь нужно указать имя программы, которую нужно запустить и рабочую директорию (если необходимо)
  • Always show desktop on connection = Disabled , чтобы скрыть рабочий стол RDS хоста

GPO: запуск программы при подключении

Если вы хотите включить возможность настройки параметров окружения RDP пользователей через их свойства, можно вернуть старое поведение RCM. Для этого нужно создать в следующих двух ветках реестра на Windows Server хосте с установленной ролью RDS параметр fQueryUserConfigFromDC со значением 1:

reg add "HKLM\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services" /v fQueryUserConfigFromDC /t REG_DWORD /d 1

reg add "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" /v fQueryUserConfigFromDC /t REG_DWORD /d 1

fQueryUserConfigFromDC - параметр реестра диспетчера удаленных подключений (RCM) включает обращение к контроллеру домена ) для проверки настроек профиля RDP

После перезапустите службу Remote Desktop Service ( TermService ) или полностью перезагрузите хост.

Если роль RD Session Host Role на хосте не установлена, нужно создать параметр fQueryUserConfigFromDC в ветке HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server .

Теперь, если вы зададите путь к исполняемому файлу приложения (или скрипту запуска) в свойствах пользователя на вкладке Environment, оно будет автоматически запускаться при его подключении к терминальному RDS серверу. Если пользователь закроет окно программы, его RDP сессия будет автоматически завершена.


Предыдущая статья Следующая статья


Комментариев: 0 Оставить комментарий

Оставить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Я не робот( Обязательно отметьте)