В процессе администрирования систем 1С:Предприятие часто возникает ситуация, когда на одном сервере или в одной сети сосуществуют разные типы лицензирования: аппаратные ключи (USB) и программные лицензии (файлы .lic). Если нам необходимо жестко ограничить конкретную информационную базу или конкретного пользователя использованием только программных лицензий, игнорируя при этом доступные в сети или локально USB-ключи, стандартных настроек интерфейса может быть недостаточно. Рассмотрим подробно все способы решения этой задачи, от простых параметров запуска до глубокой настройки конфигурационных файлов платформы.
Самый быстрый и очевидный способ, который мы можем применить — это модификация ярлыка запуска 1С или настройка параметров в окне запуска списка баз. Для того чтобы запретить платформе опрашивать аппаратные ключи, используется специальный ключ.
Разберем, как это настроить. В свойствах ярлыка, через который пользователи заходят в систему, или в настройках конкретной информационной базы в поле "Дополнительные параметры запуска" необходимо добавить строку:
/UseHwLicenses-
Проанализируем, как работает этот параметр. Знак «минус» в конце команды явно указывает платформе на необходимость отключить поиск HASP (аппаратных ключей). Это заставляет систему сразу переходить к поиску программных лицензий или выдавать ошибку, если программная лицензия не найдена, не пытаясь "занять" лицензию с USB-ключа.
Важный нюанс: Если пользователь имеет доступ к редактированию списка баз, он может самостоятельно удалить этот параметр. В среде RDP (удаленных рабочих столов) мы можем минимизировать этот риск, опубликовав 1С как RemoteApp с жестко заданными параметрами запуска, доступ к которым у обычного пользователя ограничен.
Если нам требуется гарантированно запретить использование USB-ключей для всей установки платформы на конкретном сервере (например, на терминальном сервере, где должна работать только "Бухгалтерия" с программными лицензиями), лучше всего воспользоваться конфигурационным файлом npropt.ini.
Выясним, где находится этот файл и как его редактировать. Файл npropt.ini обычно располагается в каталоге установки платформы, в папке conf. Путь может выглядеть так: C:\Program Files\1cv8\conf\ или C:\Program Files (x86)\1cv8\conf\.
Рассмотрим последовательность действий:
conf соответствующей версии платформы.npropt.ini не существует, создадим его с помощью обычного текстового редактора (от имени администратора).
UseHwLicenses=0
После сохранения файла любая база, запускаемая через данный экземпляр платформы, будет игнорировать аппаратные ключи. Это более надежный метод, так как он действует на уровне всей системы и не зависит от параметров ярлыка.
Иногда аппаратные лицензии приходят не от локального ключа, а от сетевого HASP License Manager. В этом случае мы можем настроить файл nshasp.ini так, чтобы программа просто "не видела" серверы лицензий в сети.
Файл nshasp.ini располагается в папке bin\conf внутри каталога установки платформы. Проанализируем ключевые параметры, которые нам помогут:
[NH_COMMON]
NH_TCPIP = Enabled
[NH_TCPIP]
NH_SERVER_ADDR = 127.0.0.1
NH_USE_BROADCAST = Disabled
Разберем, что дают эти настройки. Параметр NH_SERVER_ADDR = 127.0.0.1 заставляет 1С искать сетевой ключ только на локальной петле (самой себе), где ключа заведомо нет. Отключение широковещательных запросов NH_USE_BROADCAST = Disabled предотвращает поиск менеджеров лицензий в локальной сети по протоколу UDP. Таким образом, мы изолируем экземпляр 1С от сетевых аппаратных ресурсов.
Для централизованного управления параметрами запуска на уровне всего сервера можно использовать файл 1cestart.cfg. Он находится в папке %ProgramData%\1C\1CEStart. Мы можем добавить параметр UseHwLicenses непосредственно туда.
Посмотрим на пример содержания файла:
InstalledLocation=C:\Program Files\1cv8
CommonCfgLocation=C:\Program Files\1cv8\conf\1cescmn.cfg
UseHwLicenses=0
Эта настройка будет применяться ко всем пользователям, запускающим 1С через стандартное окно выбора информационных баз. Это эффективный способ для системных администраторов поддерживать единообразие настроек на RDP-фермах.
Если ситуация требует, чтобы одна часть баз на сервере работала с ключами, а другая — строго без них, мы можем применить архитектурный подход. Установим два разных релиза платформы (например, 8.3.22.xxxx и 8.3.23.xxxx).
Для версии 8.3.23.xxxx в папке conf пропишем запрет на аппаратные лицензии через npropt.ini, как мы разбирали в Методе 2. В настройках информационной базы в списке выбора укажем конкретную версию платформы 8.3.23.xxxx. Таким образом, при запуске именно этой базы поиск аппаратных ключей будет всегда отключен, в то время как другие базы, работающие на версии 8.3.22.xxxx, смогут использовать USB-ключи беспрепятственно.
При настройке программных лицензий на терминальном сервере (Win 2008R2 и выше), мы должны учитывать порядок поиска лицензий платформой. Рассмотрим его подробнее:
HASP License Manager.Если мы используем программные лицензии в файловом варианте на RDP, крайне важно убедиться, что файлы лицензий (с расширением .lic) находятся в папке, доступной всем пользователям. Обычно это C:\ProgramData\1C\licenses. Убедимся, что у группы "Пользователи" есть права на "Чтение" этой папки. Если платформа не сможет прочитать файл лицензии из-за отсутствия прав, она, согласно своему алгоритму, попытается найти аппаратный ключ. Если мы запретили аппаратные ключи параметром /UseHwLicenses-, а доступа к программным нет, пользователь получит сообщение о невозможности запуска, что и требовалось автору вопроса для предотвращения "захвата" лишних лицензий.
Также стоит помнить, что программные лицензии в многопользовательском режиме на RDP-сервере активируются один раз на весь сервер (если это многопользовательская лицензия) или поштучно на каждого пользователя. Проанализируем ситуацию из вопроса: если у нас есть файл .lic, установленный на сервер, то при правильной настройке прав и использовании параметра /UseHwLicenses-, 1С будет работать исключительно в рамках предоставленных программных лицензий.