При развертывании и администрировании системы программного лицензирования «1С:Предприятие 8» технические специалисты нередко сталкиваются с ситуацией, когда часть лицензий работает корректно и раздается пользователям по сети, а другая часть становится доступной только в том случае, если пользователь заходит непосредственно на сервер через удаленный рабочий стол (RDP). Проанализируем, почему возникает такое поведение системы защиты, где физически искать файлы лицензий и как правильно настроить сервер, чтобы все доступные лицензии корректно раздавались по сети.
Основная причина описываемой проблемы кроется в способе активации программной лицензии (выборе владельца лицензии в процессе работы помощника активации) и, как следствие, в физическом пути сохранения файла лицензии (с расширением .lic) на диске сервера.
В процессе активации программного ключа на сервере система предлагает два альтернативных варианта привязки:
Что происходит на практике в вашей системе:
Первая лицензия на 5 пользователей была активирована с параметром «Для всех пользователей». Служба сервера приложений 1С (работающая по умолчанию под системной учетной записью USR1CV8) без проблем считывает файл лицензии из общего каталога и успешно раздает её клиентам, подключающимся по сети.
Вторая лицензия на 5 пользователей была по ошибке активирована «Для текущего пользователя». В результате файл лицензии попал в скрытую папку профиля конкретного пользователя (например, Администратора сервера). Служба сервера 1С не имеет прав доступа к чужому пользовательскому профилю и «не видит» этот файл, поэтому сеть не дополучает эти 5 лицензий. Однако, как только вы заходите на сервер по RDP под той самой учетной записью администратора и запускаете локальный сеанс 1С, платформа мгновенно находит файл лицензии в вашем профиле, и запуск происходит успешно.
Рассмотрим подробнее пути, по которым платформа «1С:Предприятие» выполняет поиск файлов лицензий. Нам необходимо проверить несколько ключевых каталогов на сервере.
Общие каталоги (где должны располагаться файлы всех лицензий):
C:\ProgramData\1C\licenses — основная скрытая папка в современных ОС Windows Server для хранения общих лицензий.C:\Program Files\1cv8\conf (или C:\Program Files (x86)\1cv8\conf для 32-битных версий платформы) — еще один общий каталог, куда могут быть записаны файлы лицензий.Индивидуальные каталоги профилей (где могла «затеряться» вторая лицензия):
C:\Users\<Имя_Пользователя>\AppData\Local\1C\1Cv8\ExtDst\ — если активация была выполнена «Для текущего пользователя», файл лицензии будет находиться именно здесь.Для того чтобы объединить лицензии и сделать их доступными для раздачи по сети, выполним по шагам следующую процедуру переноса:
C:\Users\<Имя_Пользователя>\AppData\Local\1C\1Cv8\ExtDst\ и найдите там файл с расширением .lic.C:\ProgramData\1C\licenses.Важное предупреждение: Ни в коем случае не копируйте файл, оставляя оригинал на старом месте. Если платформа обнаружит в разных каталогах два файла лицензий с абсолютно одинаковыми серийными номерами и параметрами привязки, это будет расценено системой защиты как нарушение лицензионного соглашения. Лицензия будет заблокирована до момента удаления дубликата.
Переместить файл в общую папку — это только половина дела. Часто администраторы забывают настроить права доступа, из-за чего служба сервера 1С по-прежнему не может считать добавленный файл лицензии.
Проанализируем процедуру выдачи прав. Нам необходимо убедиться, что учетная запись, под которой работает служба сервера 1С (обычно это локальный пользователь USR1CV8), имеет полные права на чтение и изменение файлов в каталоге C:\ProgramData\1C\licenses.
Для автоматизации этой задачи и перезапуска службы сервера можно воспользоваться командной строкой Windows (запущенной от имени Администратора) или сценарием PowerShell:
icacls "C:\ProgramData\1C\licenses" /grant:r "USR1CV8":(OI)(CI)(F) /T
net stop "1C:Enterprise 8.3 Server Agent"
net start "1C:Enterprise 8.3 Server Agent"
Этот скрипт рекурсивно предоставляет пользователю USR1CV8 полные права на папку с лицензиями и перезапускает службу сервера 1С для того, чтобы платформа перечитала структуру файлов защиты и применила изменения.
Если на вашем предприятии используется файловая база данных, расположенная на сетевом ресурсе (в расшаренной папке), и при этом отсутствует полноценный сервер приложений 1С, то схема работы программных лицензий коренным образом меняется.
Платформа «1С:Предприятие 8» в файловом режиме не умеет раздавать программные лицензии по сети силами самой файловой базы данных. Это принципиальное отличие программных лицензий от старых аппаратных ключей HASP, которые обслуживались специальной службой HASP License Manager.
В файловом варианте без дополнительных надстроек программная лицензия, установленная на сервере, будет доступна пользователям только в сессии RDP (так как сеанс запускается локально на самом сервере). Клиенты, запускающие 1С со своих локальных компьютеров и открывающие базу по сети через общий сетевой путь (например, \\server\base), не смогут задействовать лицензии, лежащие на сервере.
Для решения этой проблемы в файловом режиме существуют два основных пути:
Решение А: Публикация базы данных на веб-сервере
Мы можем установить на сервере бесплатный веб-сервер (например, Microsoft IIS или Apache) и опубликовать в нем нашу файловую базу. При такой архитектуре модуль веб-сервера 1С запускается непосредственно на сервере, считывает программные лицензии из общих папок (все 10 доступных лицензий) и сам распределяет их пользователям, которые подключаются через тонкий клиент или веб-браузер. Это наиболее технологичный и стабильный способ организации совместной работы в файловых базах.
Решение Б: Локальная децентрализованная активация лицензий
Комплекты программных лицензий на несколько пользователей поставляются с двумя наборами пин-кодов:
Если использование веб-сервера невозможно, вы можете деактивировать многопользовательскую лицензию на сервере и выполнить активацию по одному однопользовательскому пин-коду непосредственно на каждом клиентском компьютере. В этом случае файлы .lic будут храниться локально на рабочих станциях пользователей, и сетевая раздача не потребуется.