В процессе эксплуатации терминальных серверов на базе Windows Server 2016 системные администраторы часто сталкиваются со специфической проблемой: при попытке запустить опубликованное приложение 1С:Предприятие через RemoteApp, у пользователя вместо окна программы открывается полноценный рабочий стол сервера. Ситуация осложняется тем, что проблема может носить избирательный характер — проявляться только у одного сотрудника из всей группы, а временным решением часто становится лишь полное пересоздание учетной записи со сменой SID. Разберем подробно, почему это происходит и как решить проблему без радикальных мер.
Когда мы запускаем RemoteApp, клиент mstsc.exe передает серверу команду на запуск конкретной оболочки (shell). Если на этапе инициализации сессии происходит сбой, тайм-аут или перехват управления другим процессом, сервер по умолчанию «откатывается» к запуску стандартного проводника explorer.exe, что и приводит к появлению рабочего стола. Рассмотрим по шагам методы диагностики и исправления этой ситуации.
Часто в настройках коллекции RemoteApp в качестве публикуемого приложения указывается загрузчик 1cestart.exe. Это удобно, так как он позволяет выбирать версии платформы, но иногда именно он вызывает сбой инициализации окна. Попробуем изменить настройки запуска:
1cv8.exe из каталога bin установленной платформы.exe-файла решает проблему, значит, задержка происходила на этапе выбора версии в 1cestart.Поскольку проблема часто решается удалением профиля, логично предположить, что причина кроется в ветках реестра HKEY_CURRENT_USER. Вместо удаления всего профиля, выполним очистку конкретных ключей на сервере терминалов под учетной записью проблемного пользователя:
Разберем ветку HKCU\Software\Microsoft\Windows NT\CurrentVersion\Terminal Server\CentralPublishedResources. Здесь хранятся кэшированные данные об опубликованных ресурсах. Если данные в этом разделе повреждены, сервер может «забыть» параметры запуска приложения.
Также стоит проверить ветку на стороне клиента (локального компьютера пользователя):
HKCU\Software\Microsoft\Terminal Server Client — полная очистка истории подключений в этом разделе часто помогает сбросить некорректные настройки сессии, которые клиент передает серверу при согласовании RemoteApp.
Выясним, не конфликтуют ли настройки учетной записи в AD с механизмом RemoteApp. Для этого проанализируем свойства пользователя:
Рассмотрим ситуацию с групповыми политиками (GPO). В многих организациях настроено отображение текста приветствия (Legal Notice) перед входом в систему. В режиме RemoteApp это уведомление может не отрисоваться корректно или ожидать нажатия кнопки «ОК» в скрытом режиме. Система, не дождавшись отрисовки окна 1С, открывает рабочий стол. Проанализируем настройки GPO в разделе:
Computer Configuration -> Windows Settings -> Security Settings -> Local Policies -> Security Options
Параметры «Interactive logon: Message text for users attempting to log on» и «Interactive logon: Message title for users attempting to log on» должны быть пустыми для терминальных пользователей.
Современные версии Windows 10 и Windows Server 2016 активно используют протокол UDP для передачи графики. Иногда это вызывает «залипание» сессии на этапе инициализации графического окна приложения. Попробуем принудительно перевести клиента на TCP. Для этого на компьютере пользователя выполним следующие действия в реестре:
[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services\Client]
"fClientDisableUDP"=dword:00000001
После внесения этих изменений и перезапуска mstsc.exe соединение будет устанавливаться только по TCP, что делает процесс инициализации окна RemoteApp более стабильным.
Если стандартные средства управления коллекциями Windows Server не помогают, можно воспользоваться сторонними утилитами, такими как RemoteApp Tool. Рассмотрим этот вариант подробнее. Данная утилита позволяет создавать .rdp файлы в обход стандартного механизма коллекций RD Connection Broker. Это помогает выяснить, не является ли причиной сбоя сам брокер подключений.
.rdp файл и проверим его работу под проблемным пользователем.Если в вашей среде используются User Profile Disks, проанализируем состояние файла .vhdx конкретного пользователя. Иногда диск не размонтируется корректно после завершения сессии. При новом входе система создает временный профиль или подключает старый с ошибками, что ломает логику запуска приложения. Убедитесь, что после выхода пользователя файл профиля на сетевом ресурсе не заблокирован процессом системы.
Выясним, не завершается ли процесс запуска по таймауту. В реестре сервера по адресу HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server можно найти или создать параметры, отвечающие за поведение сессии при отключении. Убедитесь, что параметр fQueryAppOnDisconnect настроен правильно (обычно значение 1), чтобы сервер корректно обрабатывал состояние приложения при разрывах связи.
Подводя итог, можно сказать, что проблема «вылета» в рабочий стол вместо 1С — это комплексная ошибка инициализации сессии. Рекомендуется начинать с самого простого — проверки пути к bin\1cv8.exe и очистки веток реестра CentralPublishedResources, прежде чем переходить к радикальному пересозданию учетных записей в домене.