В практике администрирования 1С:Предприятие встречается парадоксальная ситуация: на одном и том же сервере в рамках RDP-сессии у пользователя успешно запускается 32-битный клиент, но 64-битный выдает ошибку «Ключ защиты не обнаружен». При этом у других пользователей обе версии работают корректно. Разберем детально, почему так происходит и как устранить эту проблему, опираясь на технические особенности поиска лицензий платформой.
Для начала проанализируем, как 1С ищет лицензии. Платформа 8.3 не разделяет клиентские программные лицензии по разрядности. Это означает, что если файл .lic корректно активирован и доступен, его должны видеть обе версии платформы. Однако пути поиска и окружение для процессов x86 и x64 в операционной системе Windows могут различаться.
Рассмотрим основные места хранения лицензий, которые проверяет платформа:
%AppData%\1C\1cv8\conf.%LocalAppData%\1C\1cv8\conf.%ProgramData%\1C\licenses.conf внутри каталога конкретной версии).Прежде чем приступать к активным действиям, воспользуемся штатным инструментом диагностики. В окне с сообщением об отсутствии лицензии нажмем кнопку «Подробно». Проанализируем полученный текст. Нас интересуют строки, начинающиеся с «Локальный ключ защиты» и «Программная лицензия». Платформа выводит список всех путей, по которым она пыталась найти файлы .lic.
Сравним этот список для 32-битной и 64-битной версий. Если в 64-битной версии список путей короче или в нем отсутствуют сетевые пути, которые есть в 32-битной, причина кроется в конфигурационных файлах.
Выясним, не заданы ли для разных архитектур разные правила поиска. Платформы x32 и x64 устанавливаются в разные системные каталоги:
C:\Program Files (x86)\1cv8\confC:\Program Files\1cv8\confПроверим содержимое файла conf.cfg в обоих каталогах. Если в одном из них прописан параметр ConfLocation, указывающий на альтернативное место хранения настроек, это может привести к тому, что x64 клиент просто «не знает», где искать лицензии.
Также обратим внимание на файл location.cfg. Этот файл используется, если лицензии были намеренно перенесены в нестандартный каталог. Разберем пример настройки в этом файле:
location=C:\CustomLicensePath\
Если такой файл существует только в каталоге Program Files (x86), то 64-битная платформа о нем не узнает. Необходимо обеспечить идентичность настроек в общих каталогах conf для обеих архитектур.
Проанализируем ситуацию с правами доступа. Программные лицензии чаще всего хранятся в C:\ProgramData\1C\licenses. Несмотря на то, что это общая папка, механизмы обращения к ней из 32-битных и 64-битных приложений могут различаться из-за особенностей виртуализации (UAC Virtualization) или специфических ограничений безопасности в RDP-сессии.
Убедимся, что у проблемного пользователя есть права «Чтение» и «Просмотр содержимого» на папку ProgramData\1C\licenses и на все файлы внутри неё. Иногда бывает, что файл лицензии был создан под конкретным пользователем и не имеет разрешений для группы «Пользователи».
Часто причиной сбоя становятся «мусорные» или поврежденные файлы в профиле пользователя. Платформа 1С кэширует информацию о найденных лицензиях. Если в профиле пользователя завалялся старый файл лицензии или поврежденный конфигурационный файл, 64-битная версия может столкнуться с ним первой и прекратить дальнейший поиск.
Выполним очистку по следующему алгоритму:
%AppData%\1C\1cv8%LocalAppData%\1C\1cv8.lic в корне этих каталогов. Если они там есть и не являются актуальными — удалим их.Даже если используются программные лицензии, 1С по умолчанию пытается опросить USB-ключи защиты (HASP). В 64-битной среде время ожидания ответа от драйвера HASP или сетевого менеджера лицензий может отличаться. Чтобы ускорить процесс и исключить конфликты, принудительно отключим поиск ключей HASP в настройках запуска конкретной базы.
Для этого в списке баз нажмем «Изменить» -> «Далее» -> «Далее» и в поле «Дополнительные параметры запуска» введем:
/UseHasp-
Или отредактируем файл nethasp.ini, установив параметр NH_USE_HASP = Disabled. Это заставит платформу сразу переходить к поиску программных лицензий.
Если вышеописанные шаги не помогли, воспользуемся проверенным методом полной переустановки. Разберем последовательность действий:
C:\Program Files\1cv8 и C:\Program Files (x86)\1cv8.Таким образом, проблема чаще всего кроется не в самой платформе, а в разнице путей конфигурации (conf.cfg) или специфических правах доступа пользователя в среде RDP. Последовательная проверка путей из окна «Подробно» позволяет локализовать место разрыва в цепочке поиска лицензии.