Как настроить автоматическое завершение сеанса RemoteApp при закрытии 1С?

Системный администратор 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

При использовании 1С в режиме RemoteApp системные администраторы часто сталкиваются с ситуацией, когда пользователь закрывает программу, но значок «Подключения к удаленным рабочим столам и приложениям RemoteApp» продолжает висеть в трее, а сеанс на сервере остается в статусе «Активен» или «Отключен». Это приводит к избыточному потреблению лицензий RDP и ресурсов сервера (подобные сложности возникают, когда настроено удаленное подключение к другим компьютерам без контроля сессий). Разберем по шагам, почему это происходит и как настроить систему так, чтобы при закрытии 1С соединение разрывалось автоматически.

Анализ параметров RDP-файла

Для начала проанализируем содержимое ярлыка, через который запускается 1С. Часто причина кроется в настройках автоматического переподключения. Если в параметрах файла указано autoreconnection enabled:i:1, клиентская часть будет пытаться поддерживать сессию даже после того, как основное приложение было закрыто, если сервер не подал явную команду на завершение. Рассмотрим ключевые строки в конфигурации:


redirectclipboard:i:1
remoteapplicationmode:i:1
full address:s:1C-TEST-SERV
alternate shell:s:||1cv8c
autoreconnection enabled:i:0

Обратим внимание на параметр autoreconnection enabled. Рекомендуется установить его в значение 0, чтобы предотвратить фоновые попытки клиента восстановить «уснувшую» сессию. Однако, как показывает практика, редактирования только RDP-файла часто недостаточно, так как проблема обычно лежит на стороне серверной части терминального сервера.

Настройка реестра: исключение процессов через Sysprocs

Выясним причину, почему Windows считает сеанс активным. Операционная система завершает сеанс RemoteApp только тогда, когда закрыты все процессы, запущенные в рамках этой сессии. Часто 1С оставляет после себя дочерние процессы или взаимодействует с системными службами, которые «держат» сессию. Проанализируем ситуацию: если в диспетчере задач 1cv8c.exe исчезает, но сессия висит, значит, ее удерживает другой исполняемый файл.

Для решения этой задачи в Windows предусмотрен механизм Sysprocs. Мы можем указать системе, какие процессы не должны считаться критичными для поддержания работы сеанса. Выполним следующие действия в реестре сервера:

  1. Откроем редактор реестра (regedit).
  2. Перейдем в ветку HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\Sysprocs.
  3. Создадим новый параметр DWORD (32 бита).
  4. В качестве имени параметра укажем название исполняемого файла 1С, например, 1cv8c.exe или 1cv8.exe.
  5. Установим значение 0.

Это просигнализирует службе терминалов, что при закрытии основного окна приложения данные процессы можно игнорировать и завершать сеанс принудительно.

Решение проблемы с подсистемой печати (splwow64.exe)

Рассмотрим еще одну специфическую причину зависания сессий, характерную именно для 1С. Если пользователь в процессе работы что-то распечатывал, в сеансе запускается процесс splwow64.exe (Print Driver Host). На 64-битных системах Windows Server этот процесс по умолчанию остается активным в течение 2 минут после последней операции печати, чтобы ускорить последующие задания. Пока он активен, RemoteApp не закроется.

Чтобы изменить это поведение, настроим таймаут завершения процесса печати:

  1. Перейдем в раздел реестра HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Terminal Server.
  2. Создадим параметр DWORD с именем Splwow64TimeOut.
  3. Установим значение 1 (означает 1 секунду ожидания).

Теперь подсистема печати будет закрываться практически мгновенно после выхода из 1С, позволяя сеансу корректно завершиться.

Настройка групповых политик для завершения отключенных сеансов

Проанализируем ситуацию, когда сессия переходит в состояние «Disconnected», но не закрывается. Это может происходить из-за настроек по умолчанию в Windows Server 2019. Нам необходимо принудительно ограничить время жизни таких сессий. Разберем по шагам настройку через GPO:

  1. Запустим gpedit.msc на сервере.
  2. Перейдем по пути: Конфигурация компьютера -> Административные шаблоны -> Компоненты Windows -> Службы удаленных рабочих столов -> Узел сеансов удаленных рабочих столов -> Ограничение сеансов по времени (здесь же настраивается теневое подключение к RDP сессии пользователя).
  3. Найдем параметр «Установить предел времени для отключенных сеансов». Переведем его в состояние «Включено» и выберем минимальное время (например, 1 минута).
  4. Найдем параметр «Завершать сеанс при достижении предела времени» и установим значение «Включено». В этом же разделе GPO часто решается и задача по замене имени сервера в файле ibases.v8i.

Важный момент: если вы используете RemoteApp, также крайне полезно настроить параметр «Установить предел времени для выхода из сеанса RemoteApp». Если установить его в положение «Немедленно», сервер будет терминировать сессию сразу после закрытия последнего окна опубликованного приложения.

Использование завершающего скрипта Logoff

Если вышеуказанные методы не помогают из-за особенностей конфигурации 1С, рассмотрим вариант запуска приложения через командный файл. Вместо публикации напрямую 1cv8c.exe, создадим и опубликуем .bat или .cmd файл. Посмотрим на пример кода:


@echo off
start /wait "1C" "C:\Program Files\1cv8\common\1cestart.exe"
logoff

В данном сценарии команда start /wait заставляет командный интерпретатор ждать, пока процесс 1С не будет завершен пользователем. Как только 1С закрывается, выполняется следующая строка — logoff, которая инициирует немедленный выход пользователя из системы и закрытие всех фоновых соединений. При публикации такого скрипта в качестве RemoteApp не забудьте указать правильную рабочую директорию и иконку, чтобы для пользователя запуск выглядел привычно.

Корректировка времени ожидания закрытия приложений (WaitToKillAppTimeout)

Иногда система слишком долго ждет отклика от зависших фоновых окон или подтверждения закрытия от приложений. Мы можем ускорить этот процесс, изменив пользовательские настройки таймаутов в реестре. Это особенно актуально, если 1С при закрытии пытается выполнить длительные регламентные операции (например, выгрузку данных в облако или очистку кэша).

Посмотрим на параметры в ветке HKEY_CURRENT_USER\Control Panel\Desktop:

Комплексное применение этих настроек (реестр, групповые политики и оптимизация RDP-файла) позволяют добиться стабильной работы RemoteApp и гарантированного освобождения лицензий сразу после выхода пользователя из 1С. Для быстрого поиска готовых инструкций по настройке серверов и окружения можно использовать справочник по типовым задачам системного администрирования Windows, Linux и 1С.

← На главную