Многие технические специалисты сталкиваются с внезапной и крайне неприятной проблемой: при работе в Конфигураторе программа внезапно закрывается с критической ошибкой: «Ключ защиты программы больше не доступен! Работа программы завершена». При этом пользователи в режиме «Предприятие» продолжают работать абсолютно нормально, а сама проблема может проявляться хаотично — от нескольких раз в день до одного раза в неделю. Особенно часто эта ситуация наблюдается на платформе версии 8.3.22.2283 и смежных релизах.
В данной статье мы подробно разберем, почему возникает этот конфликт, как диагностировать скрытые угрозы в системе лицензирования и какими методами можно полностью очистить рабочее окружение от факторов, провоцирующих вылеты.
Первым делом нам необходимо выяснить, какую именно лицензию использует программа в момент запуска. Даже если вы уверены, что у вас установлены только программные лицензии (файлы .lic), система может вести себя иначе. Проанализируем ситуацию через окно «О программе».
Разберем конкретный маркер проблемы. Если в поле «Лицензия: Текущая» вы видите строку следующего вида:
Сетевой HASP4 ORGL8 100, получило клиентское приложение
Это однозначный сигнал о наличии в вашей сети или локально на машине так называемого «мутанта» — эмулятора аппаратного ключа HASP на 100 рабочих мест. Настоящие программные лицензии в этом окне отображаются с указанием пути к файлу лицензии и регистрационного номера. Если вам требуется установка комьюнити-лицензии разработчика на сервер 1С, существуют специальные подходы для её активации. Появление записи про HASP4 ORGL8 100 при отсутствии физического синего ключа в сервере означает, что 1С нашла виртуальный взлом и пытается работать через него.
Рассмотрим, почему «Предприятие» работает стабильно, а Конфигуратор закрывается — решить проблему поможет инструмент для отладки кода в режиме Предприятие. Проанализируем изменения в механизмах защиты новых платформ (начиная с 8.3.22):
8.3.22.2283 зафиксирована ошибка, при которой микроразрыв сетевого соединения с менеджером лицензий приводит к «зависанию» потока проверки. После этого Конфигуратор считает лицензию потерянной навсегда до полного перезапуска всех связанных процессов.Если мы выяснили, что 1С подхватывает сетевой HASP, которого не должно быть, нам нужно найти «раздатчика». Разберем инструменты для поиска:
http://localhost:1947. Перейдем в раздел Sentinel Keys. Если таблица пуста, значит, на локальной машине драйвер HASP не видит ключей. Однако, это не гарантирует отсутствие эмулятора, так как «мутанты» часто работают в обход стандартного менеджера.Aladdin Monitor. Она позволяет просканировать локальную сеть и увидеть IP-адрес компьютера, на котором запущен HASP License Manager, раздающий те самые 100 лицензий.C:\Program Files\1cv8\conf или в папке установки платформы. Проанализируем секцию [NH_TCPIP]. Если там жестко прописаны IP-адреса (параметр NH_SERVER_ADDR), это может быть причиной обращения к старому серверу с эмулятором.Выясним, как полностью удалить следы нелегального ПО, которые мешают работе лицензионной 1С. Рассмотрим пошаговый алгоритм очистки сервера и рабочих станций:
Проанализируем дерево устройств. Нам необходимо зайти в Диспетчер устройств, включить отображение скрытых устройств и проверить раздел «Контроллеры USB» и «Системные устройства». Ищем и удаляем:
Virtual USB Bus EnumeratorSentinel HASP Key (если нет физического ключа)SafeNet USB KeyЗатем проверим ветки реестра, где эмуляторы хранят дампы ключей. Обязательно убедимся в отсутствии разделов в:
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Emulator
и
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\MultiKey
Для гарантированного результата рекомендуем воспользоваться скриптом EmulsCleanUp.cmd (его легко найти в профессиональных сообществах системных администраторов 1С). Разберем, что делает этот скрипт:
hasplms.vbus.HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\NEH и аналогичные.Если проблема возникает только при работе через удаленный рабочий стол, проанализируем влияние системных процессов. Часто виновником становится процесс печати splwow64.exe. Быстрое подключение к RDP с автоматическим вводом пароля может упростить вход, а для централизованного управления множеством подключений рекомендуется использовать EasyRDPHub — легкую утилиту для управления удалёнными подключениями к рабочему столу.
В терминальных сессиях этот процесс может «зависать», удерживая за собой ресурсы сессии пользователя. При повторном входе или попытке проверки лицензии Конфигуратор натыкается на блокировку ресурсов старым процессом и выдает ошибку ключа. Рекомендуется настроить автоматическое завершение «брошенных» сессий RDP и контролировать дерево процессов пользователя в диспетчере задач — для этого подойдёт администрирование сеансов и процессов кластера 1С.
Если стандартные методы не помогают, нам потребуется собрать логи самой платформы. Создадим файл logcfg.xml в папке conf со следующим содержанием для отслеживания ошибок лицензирования:
<config xmlns="http://v8.1c.ru/7.4/config/logcfg">
<dump location="C:\Dumps" create="1" interval="10" copyTo=""/>
<log location="C:\1C_Logs" history="24">
<event>
<eq property="Name" value="HASP"/>
</event>
<event>
<eq property="Name" value="LEvent"/>
</event>
<property name="All"/>
</log>
</config>
После сбора и анализа полученных логов, для их удобной обработки, например, конвертирования технологического журнала в новый формат или для удаления лишних переносов строк, можно использовать специализированные утилиты. В них будет четко указано, в какой момент Конфигуратор инициирует проверку и по какому адресу (локальному или сетевому) он получает отказ или некорректный ответ от ключа.
Подведем итог нашему исследованию. Для стабильной работы Конфигуратора без вылетов выполните следующие действия:
8.3.23.х или выше, где исправлены многие ошибки взаимодействия с лицензиями в режиме RDP.HASP, если используете только программные лицензии. Если аппаратные ключи есть — обновите драйвер до версии 8.53 или выше.