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

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

Если вы хотите включить возможность настройки параметров окружения 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

После перезапустите службу Remote Desktop Service (
TermService
) или полностью перезагрузите хост.
fQueryUserConfigFromDC
в ветке
HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server
.Теперь, если вы зададите путь к исполняемому файлу приложения (или скрипту запуска) в свойствах пользователя на вкладке Environment, оно будет автоматически запускаться при его подключении к терминальному RDS серверу. Если пользователь закроет окно программы, его RDP сессия будет автоматически завершена.

