Как запретить получение аппаратных лицензий в 1С и использовать только программные?

Системный администратор 1С v8.3 (Обычные формы) 1C:Бухгалтерия IT и автоматизация бизнеса
← На главную

В процессе администрирования систем 1С:Предприятие часто возникает ситуация, когда на одном сервере или в одной сети сосуществуют разные типы лицензирования: аппаратные ключи (USB) и программные лицензии (файлы .lic). Если нам необходимо жестко ограничить конкретную информационную базу или конкретного пользователя использованием только программных лицензий, игнорируя при этом доступные в сети или локально USB-ключи, стандартных настроек интерфейса может быть недостаточно. Рассмотрим подробно все способы решения этой задачи, от простых параметров запуска до глубокой настройки конфигурационных файлов платформы.

Метод 1. Использование параметра командной строки

Самый быстрый и очевидный способ, который мы можем применить — это модификация ярлыка запуска 1С или настройка параметров в окне запуска списка баз. Для того чтобы запретить платформе опрашивать аппаратные ключи, используется специальный ключ.

Разберем, как это настроить. В свойствах ярлыка, через который пользователи заходят в систему, или в настройках конкретной информационной базы в поле "Дополнительные параметры запуска" необходимо добавить строку:

/UseHwLicenses-

Проанализируем, как работает этот параметр. Знак «минус» в конце команды явно указывает платформе на необходимость отключить поиск HASP (аппаратных ключей). Это заставляет систему сразу переходить к поиску программных лицензий или выдавать ошибку, если программная лицензия не найдена, не пытаясь "занять" лицензию с USB-ключа.

Важный нюанс: Если пользователь имеет доступ к редактированию списка баз, он может самостоятельно удалить этот параметр. В среде RDP (удаленных рабочих столов) мы можем минимизировать этот риск, опубликовав 1С как RemoteApp с жестко заданными параметрами запуска, доступ к которым у обычного пользователя ограничен.

Метод 2. Глобальный запрет через файл npropt.ini

Если нам требуется гарантированно запретить использование USB-ключей для всей установки платформы на конкретном сервере (например, на терминальном сервере, где должна работать только "Бухгалтерия" с программными лицензиями), лучше всего воспользоваться конфигурационным файлом npropt.ini.

Выясним, где находится этот файл и как его редактировать. Файл npropt.ini обычно располагается в каталоге установки платформы, в папке conf. Путь может выглядеть так: C:\Program Files\1cv8\conf\ или C:\Program Files (x86)\1cv8\conf\.

Рассмотрим последовательность действий:

  1. Перейдем в папку conf соответствующей версии платформы.
  2. Если файла npropt.ini не существует, создадим его с помощью обычного текстового редактора (от имени администратора).
  3. Добавим в файл следующую строку:

UseHwLicenses=0

После сохранения файла любая база, запускаемая через данный экземпляр платформы, будет игнорировать аппаратные ключи. Это более надежный метод, так как он действует на уровне всей системы и не зависит от параметров ярлыка.

Метод 3. "Ослепление" менеджера лицензий через nshasp.ini

Иногда аппаратные лицензии приходят не от локального ключа, а от сетевого 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С от сетевых аппаратных ресурсов.

Метод 4. Настройка приоритетов в файле 1cestart.cfg

Для централизованного управления параметрами запуска на уровне всего сервера можно использовать файл 1cestart.cfg. Он находится в папке %ProgramData%\1C\1CEStart. Мы можем добавить параметр UseHwLicenses непосредственно туда.

Посмотрим на пример содержания файла:


InstalledLocation=C:\Program Files\1cv8
CommonCfgLocation=C:\Program Files\1cv8\conf\1cescmn.cfg
UseHwLicenses=0

Эта настройка будет применяться ко всем пользователям, запускающим 1С через стандартное окно выбора информационных баз. Это эффективный способ для системных администраторов поддерживать единообразие настроек на RDP-фермах.

Метод 5. Использование разных версий платформы

Если ситуация требует, чтобы одна часть баз на сервере работала с ключами, а другая — строго без них, мы можем применить архитектурный подход. Установим два разных релиза платформы (например, 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-ключи беспрепятственно.

Важные замечания по программным лицензиям и RDP

При настройке программных лицензий на терминальном сервере (Win 2008R2 и выше), мы должны учитывать порядок поиска лицензий платформой. Рассмотрим его подробнее:

  1. Сначала 1С ищет программную лицензию, привязанную к текущему сеансу или компьютеру.
  2. Затем проверяется наличие локального USB-ключа.
  3. После этого выполняется поиск на сервере 1С:Предприятия (для клиент-серверных вариантов).
  4. В последнюю очередь опрашивается сетевой HASP License Manager.

Если мы используем программные лицензии в файловом варианте на RDP, крайне важно убедиться, что файлы лицензий (с расширением .lic) находятся в папке, доступной всем пользователям. Обычно это C:\ProgramData\1C\licenses. Убедимся, что у группы "Пользователи" есть права на "Чтение" этой папки. Если платформа не сможет прочитать файл лицензии из-за отсутствия прав, она, согласно своему алгоритму, попытается найти аппаратный ключ. Если мы запретили аппаратные ключи параметром /UseHwLicenses-, а доступа к программным нет, пользователь получит сообщение о невозможности запуска, что и требовалось автору вопроса для предотвращения "захвата" лишних лицензий.

Также стоит помнить, что программные лицензии в многопользовательском режиме на RDP-сервере активируются один раз на весь сервер (если это многопользовательская лицензия) или поштучно на каждого пользователя. Проанализируем ситуацию из вопроса: если у нас есть файл .lic, установленный на сервер, то при правильной настройке прав и использовании параметра /UseHwLicenses-, 1С будет работать исключительно в рамках предоставленных программных лицензий.

← На главную