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

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

При наведении порядка в ИТ-инфраструктуре компании системные администраторы часто сталкиваются с ситуацией, когда в окне «О программе» отображаются «лишние» или устаревшие программные лицензии. Проблема усугубляется, если в сети работает множество компьютеров (часть из которых находится вне домена), а лицензии активировались локально на рабочих станциях пользователей, а не на сервере «1С». Через стандартную консоль администрирования сервера такие лицензии увидеть невозможно.

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

Анатомия окна «О программе»: где реальность, а где история?

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

  1. Раздел «Текущая»: Здесь отображается информация о лицензии, которая используется в текущем сеансе работы прямо сейчас. Это может быть сетевая программная лицензия, выданная сервером «1С», локальный USB-ключ (HASP) или локальный файл *.lic на компьютере пользователя. Эта информация всегда актуальна.
  2. Раздел «Информационная база»: В этот список платформа записывает метаданные обо всех лицензиях, с которыми данная база данных когда-либо успешно запускалась. Это своего рода кэш истории лицензирования, хранящийся непосредственно в самой СУБД (в таблицах настроек информационной базы). Даже если физический файл лицензии давно удален с компьютера пользователя, запись в этом разделе останется.
  3. Раздел «Конфигурация»: Аналогично разделу информационной базы, здесь отображается накопленная история использования различных лицензий конкретной конфигурацией.

Важный вывод: Если вы видите «левую» организацию или устаревшую лицензию в разделах «Информационная база» или «Конфигурация», это вовсе не означает, что файл лицензии физически присутствует на одном из компьютеров прямо сейчас. Это может быть лишь исторический след. Искать физические файлы имеет смысл только для тех лицензий, которые реально задействованы в текущих сеансах.

Где физически хранятся файлы программных лицензий (*.lic)?

Если мы установили, что лицензия действительно активна и используется, нам нужно знать, где именно на компьютерах пользователей платформа сохраняет файлы с расширением *.lic. Платформа «1С:Предприятие» ищет файлы лицензий в строго определенных директориях в следующем порядке:

1. Общие каталоги для всех пользователей системы:

2. Профили конкретных пользователей (если у пользователя не было прав администратора при активации):

Обратите внимание: Путь к лицензиям может быть переопределен системным администратором в конфигурационном файле conf.cfg с помощью параметра ConfLocation.

Метод 1. Сужение круга поиска через Журнал регистрации и активные сеансы

Если в сети более 100 компьютеров, обходить каждый вручную или запускать тотальное сканирование дисков нерационально. Нам нужно максимально сузить список «подозреваемых» машин. Рассмотрим алгоритм действий:

  1. Анализ Журнала регистрации: Напишем простую обработку или выгрузим программно журнал регистрации за достаточно длительный период (например, за последние 3–6 месяцев). Сгруппируем записи по имени компьютера клиента. Нам нужен список всех уникальных сетевых имен машин, с которых пользователи заходили в базу.
  2. Отсеивание известных источников: Из полученного списка компьютеров исключим те, которые работают в терминальном режиме на сервере, а также те, которые получают лицензии централизованно от сервера приложений «1С» (эту информацию можно собрать через консоль администрирования сервера «1С» в течение рабочего дня).
  3. Получение целевой группы: Оставшиеся компьютеры — это именно те рабочие станции, которые запускают платформу локально и, скорее всего, используют локальные программные лицензии или аппаратные ключи. Именно на этих машинах мы и будем проводить автоматический поиск.

Для программной выгрузки уникальных имен компьютеров из Журнала регистрации мы можем использовать следующий фрагмент кода на языке «1С»:


ПараметрыОтбора = Новый Структура;
ПараметрыОтбора.Вставить("ДатаНачала", НачалоГода(ТекущаяДата()));

ТаблицаИмен = Новый ТаблицаЗначений;
ТаблицаИмен.Колонки.Добавить("ИмяКомпьютера", Новый ОписаниеТипов("Строка"));

ВыгрузитьЖурналРегистрации(ТаблицаИмен, ПараметрыОтбора, "ИмяКомпьютера");
ТаблицаИмен.Свернуть("ИмяКомпьютера");

Для Каждого СтрокаКомпьютер Из ТаблицаИмен Цикл
    Сообщить("Компьютер для проверки: " + СтрокаКомпьютер.ИмяКомпьютера);
КонецЦикла;

Метод 2. Использование утилиты «Ring» и PowerShell для автоматического сбора данных

Для автоматизации процесса наведения порядка в доменной сети (Active Directory) мы можем использовать штатную утилиту лицензирования ring, которая поставляется вместе с платформой «1С» (находится в каталоге установки платформы, папка ExtDst).

Утилита ring позволяет программно взаимодействовать с подсистемой лицензирования. Рассмотрим основные команды:

Мы можем написать PowerShell-скрипт, который будет распространяться через групповые политики (GPO) при запуске компьютеров. Скрипт будет искать файлы *.lic в стандартных путях, опрашивать утилиту ring и записывать результаты в единую сетевую папку, доступную для чтения всем компьютерам домена.

Рассмотрим пример такого PowerShell-скрипта:


# Путь к сетевой папке для сбора отчетов
$NetworkShare = "\\your-server\1C_Lic_Audit$"
$ComputerName = $env:COMPUTERNAME
$ReportFile = "$NetworkShare\$ComputerName.txt"

# Поиск файлов лицензий в стандартных путях
$LicensePaths = @(
    "C:\ProgramData\1C\licenses",
    "$env:APPDATA\1C\licenses"
)

$FoundLicenses = @()

foreach ($Path in $LicensePaths) {
    if (Test-Path $Path) {
        $Files = Get-ChildItem -Path $Path -Filter *.lic
        foreach ($File in $Files) {
            $FoundLicenses += "Файл: $($File.FullName), Изменен: $($File.LastWriteTime)"
        }
    }
}

# Если лицензии найдены, записываем отчет
if ($FoundLicenses.Count -gt 0) {
    $ReportContent = "Компьютер: $ComputerName`r`n"
    $ReportContent += "===================================`r`n"
    foreach ($Lic in $FoundLicenses) {
        $ReportContent += "$Lic`r`n"
    }
    Set-Content -Path $ReportFile -Value $ReportContent
}

Метод 3. Сбор логов через Технологический журнал (ТЖ)

Еще один профессиональный способ отслеживания источников получения лицензий — использование встроенного механизма Технологического журнала «1С». Мы можем настроить сбор событий лицензирования на рабочих станциях или на сервере приложений.

Для этого в каталоге настроек (например, C:\Program Files\1cv8\conf) необходимо создать файл конфигурации технологического журнала logcfg.xml со следующим содержимым:


<config xmlns="http://v8.1c.ru/v8/tech-log">
    <log location="C:\1c_logs\lic_events" history="168">
        <event>
            <eq property="Name" value="LIC"/>
        </event>
        <property name="all"/>
    </log>
</config>

Событие LIC отвечает за любые действия, связанные с получением лицензий платформой. При запуске сеанса «1С» запишет в лог детальную информацию: имя файла *.lic, его сетевой или локальный путь, а также параметры ключа защиты, который был успешно применен. Проанализировав эти файлы логов, мы получим исчерпывающую картину без необходимости сканирования жестких дисков пользователей.

Метод 4. Официальный запрос в Центр лицензирования «1С»

Если инфраструктура компании сильно распределена, компьютеры не объединены в домен, а часть сотрудников работает удаленно, существует максимально простой административный способ сопоставления лицензий и конкретных ПК.

Мы можем направить официальный запрос в Центр лицензирования «1С» по адресу электронной почты lic@1c.ru. Запрос должен быть отправлен от имени руководителя или ответственного лица с официального e-mail адреса организации, который привязан к личному кабинету ИТС или указывался при активации продуктов.

В письме необходимо указать:

В ответ служба поддержки пришлет официальный отчет (обычно в формате PDF или Excel), содержащий:

Имея на руках этот отчет, мы можем мгновенно сопоставить список активных пин-кодов с текущим парком компьютеров компании, найти «потерянные» лицензии и локализовать машины, на которых активированы не принадлежащие организации лицензии.

Очистка следов нелицензионного использования программного обеспечения

При аудите сети часто обнаруживаются старые следы использования эмуляторов ключей защиты (HASP), которые могут конфликтовать с легальными программными лицензиями и искажать информацию в окне «О программе».

Для компьютеров, находящихся в домене Active Directory, мы можем использовать утилиту удаленного выполнения команд PsExec.exe (из пакета PSTools от Microsoft Sysinternals) для очистки системы от нелегальных драйверов эмуляторов без непосредственного визита к пользователю. Для этого можно запустить удаленную командную строку и выполнить команды по удалению служб эмуляторов (например, loaddrv, vushle и др.), а также очистить соответствующие ветки системного реестра Windows.

Подводя итог, отметим, что наиболее эффективным подходом является комбинирование методов: сначала мы запрашиваем официальный отчет в Центре лицензирования «1С» для понимания общей картины, затем используем PowerShell-скрипты и Технологический журнал для локального поиска файлов на «подозрительных» компьютерах, и в завершение удаляем неактуальные лицензии и кэш.

← На главную