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

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

В практике системного администрирования 1С часто возникает ситуация, когда на одном сервере или мощном рабочем ПК сосуществуют два типа защиты: аппаратный ключ защиты (HASP) и программная лицензия (файл .lic). Основная сложность заключается в том, что платформа 1С по умолчанию стремится захватить любую доступную лицензию, что приводит к конфликтам. Например, локальный пользователь может случайно «занять» программную лицензию, предназначенную для удаленного сотрудника, в то время как удаленный сотрудник физически не может использовать аппаратный ключ через RDP. Разберем подробно, почему так происходит и как правильно настроить систему.

Выясним причину: почему RDP-пользователь не видит аппаратный ключ?

Проанализируем техническую составляющую защиты. Существует жесткое ограничение разработчиков: локальный однопользовательский HASP-ключ (обычно синего цвета) не может быть проброшен в сессию удаленного рабочего стола (RDP). Драйвер защиты 1С блокирует доступ к такому ключу, если запуск программы происходит не из «нулевой» (консольной) сессии.

В то же время программные лицензии (файлы с расширением .lic) лишены этого ограничения и прекрасно работают в любых сессиях. Проблема автора темы заключается в том, что «родной» (локальный) пользователь имеет приоритетный доступ к обоим видам лицензий и часто «перехватывает» программную лицензию, оставляя RDP-пользователя ни с чем. Наша задача — принудительно заставить локального пользователя работать только через HASP, а программную лицензию оставить исключительно для RDP.

Посмотрим на приоритеты поиска лицензий платформой

Прежде чем переходить к настройкам, рассмотрим, в каком порядке платформа 1С:Предприятие 8.3 ищет лицензию при запуске:

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

Как мы видим, программная лицензия стоит очень высоко в приоритете. Чтобы «развести» пользователей, нам нужно либо изменить параметры запуска, либо ограничить видимость файлов лицензий на уровне файловой системы.

Решение 1: Использование параметров запуска в списке информационных баз

Самый простой способ, не требующий манипуляций с правами доступа, — это использование ключей запуска. Проанализируем возможности параметров /UseHwLicenses. Эти параметры можно прописать в окне запуска 1С:Предприятия для каждой конкретной базы (кнопка «Изменить» -> далее -> «Дополнительные параметры запуска»).

Разберем значения:

Для локального пользователя, который должен работать только с HASP, установка /UseHwLicenses+ может быть недостаточно эффективной, если 1С «решит», что программная лицензия доступна быстрее. Поэтому перейдем к более надежным методам.

Решение 2: Разграничение видимости файлов программных лицензий

Программная лицензия 1С — это файл. По умолчанию платформа ищет эти файлы в нескольких местах. Рассмотрим основные пути:

  1. C:\ProgramData\1C\licenses — общая папка для всех пользователей ПК.
  2. %AppData%\1C\1cv8\conf — личная папка пользователя (обычно C:\Users\ИмяПользователя\AppData\Roaming\1C\1cv8\conf).

Для того чтобы локальный пользователь «не видел» программную лицензию, выполним следующие действия:

  1. Найдем файл лицензии в папке C:\ProgramData\1C\licenses (он имеет расширение .lic).
  2. Переместим этот файл из общей папки в личную папку того пользователя, который подключается по RDP.
  3. Теперь, когда локальный пользователь запустит 1С, платформа проверит его личный профиль (там пусто) и общую папку ProgramData (там тоже пусто), после чего ей ничего не останется, кроме как обратиться к аппаратному ключу HASP.

Если перемещение файла по каким-то причинам невозможно, проанализируем альтернативу с правами доступа:

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

Решение 3: Индивидуальная настройка через 1cestart.cfg

Существует еще один уровень настроек — файл конфигурации запуска 1cestart.cfg. Этот файл управляет поведением программы запуска для конкретного пользователя. Разберем, как его использовать.

Путь к файлу в профиле пользователя: %AppData%\1C\1cv8\common\1cestart.cfg.

Мы можем создать или отредактировать этот файл для каждого пользователя отдельно. Рассмотрим пример настройки:

Для локального пользователя (чтобы искал только HASP):


UseHwLicenses=1
Priority=HwLicenses

Для RDP-пользователя (чтобы не тратил время на опрос USB-портов, которые ему недоступны):

UseHwLicenses=0

Такой подход позволяет гибко управлять поведением платформы без необходимости менять настройки каждой информационной базы в списке.

Проанализируем ситуацию с nethasp.ini

В сообщении упоминалось, что файл nethasp.ini один на весь компьютер. Этот файл отвечает за настройки поиска сетевых ключей HASP через менеджер лицензий. Если у вас используются локальные ключи (однопользовательские), настройки в nethasp.ini практически не влияют на ситуацию. Однако, если вы решите в будущем перейти на сетевой ключ, помните, что nethasp.ini также может быть размещен в папке conf конкретного пользователя, что позволит разделить настройки поиска менеджера лицензий для разных сессий.

Подведем итоги

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

Разберем по шагам финальный алгоритм действий:

  1. Убеждаемся, что аппаратный ключ вставлен и драйвер HASP установлен (локальный пользователь должен видеть его в «О программе»).
  2. Находим файл .lic в C:\ProgramData\1C\licenses.
  3. Вырезаем его оттуда и вставляем в C:\Users\Имя_RDP_Пользователя\AppData\Roaming\1C\1cv8\conf (папку conf нужно создать, если её нет).
  4. В настройках баз у локального пользователя проверяем наличие галочки «Использовать аппаратную лицензию».
  5. Для надежности в дополнительных параметрах запуска у локального пользователя прописываем /UseHwLicenses+.

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

← На главную