Часто системные администраторы сталкиваются с ситуацией, когда лицензий 1С:Предприятия по расчету должно хватать на всех пользователей, но сервер внезапно выдает сообщение об их нехватке. При этом традиционная «перезагрузка сервера» помогает лишь временно, а проблема возвращается снова. Давайте разберем, почему это происходит и как настроить систему так, чтобы лицензии освобождались корректно.
Самая распространенная причина «потери» лицензий — это привычка пользователей закрывать 1С путем нажатия на крестик в правом верхнем углу окна терминальной сессии (RDP). В этом случае пользователь фактически не завершает работу с программой, а просто «отключает» сеанс. Сама 1С при этом не получает сигнала о завершении работы и продолжает удерживать лицензию в памяти сервера как активную.
Что нужно сделать в первую очередь:
1С через меню «Файл — Выход», и только потом завершать сеанс Windows через кнопку «Пуск».1С (в Конфигураторе) можно установить параметры «Время засыпания пассивных сеансов» и «Время завершения спящих сеансов».Даже если пользователь закрыл программу правильно, в Windows Server часто «залипает» процесс SplWOW64.exe. Этот процесс отвечает за работу 32-разрядных приложений с подсистемой печати. Если 1С обращалась к принтеру, этот процесс может остаться активным в оперативной памяти, блокируя завершение терминальной сессии.
Как автоматизировать завершение этого процесса:
Рассмотрим пошагово, как вмешаться в работу реестра Windows, чтобы система принудительно очищала память при выходе пользователя:
regedit).HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\SysProcs.DWORD (32 бита) с именем splwow64.exe и установите значение 0. Это даст команду терминальному серверу завершать данный процесс сразу при выходе пользователя.HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Print.DWORD (32 бита) с именем SplWOW64TimeOut и присвойте ему значение 1. Это заставит систему выгружать процесс печати из памяти максимально быстро.Если проблема носит массовый характер, рекомендуем автоматизировать процесс «выбивания» зависших сессий. Рассмотрим пример использования пакетного файла, который можно добавить в планировщик задач для выполнения в ночное время или по расписанию.
Разберем пример простого скрипта для принудительного завершения процессов 1С, которые остались висеть в диспетчере задач:
@echo off
:: Принудительное завершение всех процессов 1С
taskkill /F /IM 1cv8.exe /T
:: Перезапуск службы лицензирования (если используется HASP)
net stop hasplm
net start hasplm
Важное примечание: Применение команды taskkill с ключом /F (force) немедленно прерывает работу приложения. Используйте этот метод с осторожностью, чтобы пользователи не потеряли несохраненные данные, если скрипт сработает в рабочее время.
Подводя итоги наших действий, выделим стратегию предотвращения нехватки лицензий:
SysProcs и SplWOW64TimeOut позволяет Windows самостоятельно «подчищать» зависшие сессии печати.1С для разрыва неактивных сеансов, чтобы программа сама освобождала лицензию, если пользователь отошел от компьютера на длительное время.Применяя эти методы комплексно, вы сможете значительно повысить стабильность работы терминального сервера и забыть о необходимости постоянной перезагрузки всего сервера для освобождения лицензий.