К статье
Практический материал

Администрирование · 12 мин

Как зарегистрировать DLL для 1С

Как зарегистрировать DLL для 1С через regsvr32: права администратора, разрядность 32/64 бит, типовые ошибки 0x80004005 и способы их устранения.

Внешние компоненты в виде DLL-файлов используются в 1С для подключения торгового оборудования, работы со сканерами штрихкодов, криптографии и других задач, которые нельзя решить встроенным языком. Чтобы платформа 1С могла обратиться к такой библиотеке через механизм COM, компонент должен быть зарегистрирован в системном реестре Windows. Без регистрации попытка подключить компоненту в конфигураторе или коде завершится ошибкой «Не удалось создать объект» или «Компонента не найдена».

Регистрация выполняется штатной утилитой Windows regsvr32, либо средствами самой 1С, если компонента поставляется в виде макета внешней компоненты. Процедура занимает несколько минут, но требует прав администратора и понимания разрядности системы: большинство сбоев связано именно с попыткой зарегистрировать 32-битную DLL не той версией regsvr32 или без повышенных прав.

Что нужно подготовить перед регистрацией

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

Далее определите разрядность компоненты и разрядность клиента 1С. Если вы работаете с 32-битным клиентом 1С, нужна 32-битная версия DLL; для 64-битного клиента — 64-битная. Несовпадение разрядности — самая частая причина ситуации, когда регистрация проходит успешно, но 1С компоненту не видит.

Проверьте, что у вашей учётной записи есть права администратора, либо заранее договоритесь с системным администратором. Регистрация COM-компоненты записывает сведения в ветку реестра HKEY_CLASSES_ROOT, и без повышенных прав regsvr32 завершится ошибкой.

Как определить разрядность DLL и клиента 1С

Разрядность клиента 1С видна в окне «О программе»: откройте меню «Справка» — «О программе» и посмотрите версию платформы. Если указано «8.3.x (x86-64)» — это 64-битный клиент, если просто «8.3.x» без пометки — обычно 32-битный. Точную разрядность также показывает диспетчер задач: у 32-битных процессов в старых версиях Windows рядом с именем стоит пометка «32 бита».

Разрядность самой DLL определить сложнее. Простой способ — открыть файл в любом просмотрщике PE-заголовков или воспользоваться утилитой от разработчика компоненты. На практике проще ориентироваться на документацию поставщика: компоненты торгового оборудования и сканеров исторически чаще 32-битные, тогда как современные компоненты по технологии Native API часто поставляются в обеих разрядностях.

Клиент 1С 32-битныйНужна 32-битная DLL

Регистрировать через SysWOW64\regsvr32.exe на 64-битной Windows

Клиент 1С 64-битныйНужна 64-битная DLL

Регистрировать через System32\regsvr32.exe

Ошибка «Модуль загружен, но точка входа не найдена»Файл не является COM-компонентой

Возможно, это Native API компонента или обычная библиотека — она регистрации не требует

Ошибка 0x80070005Недостаточно прав

Перезапустите командную строку от имени администратора

Регистрация DLL через regsvr32: пошаговая инструкция

Стандартный способ регистрации — утилита regsvr32, входящая в состав Windows. Скопируйте файл DLL в постоянную папку, например в каталог установки оборудования или в отдельную папку вроде C:\Components. Не регистрируйте библиотеку из временных папок, рабочего стола или каталога загрузок: путь к файлу фиксируется в реестре, и после перемещения или удаления файла компонента перестанет работать.

Откройте командную строку от имени администратора: нажмите «Пуск», введите «cmd», щёлкните правой кнопкой по «Командная строка» и выберите «Запуск от имени администратора». Затем выполните команду регистрации, указав полный путь к файлу.

cmd
regsvr32 "C:\Components\MyComponent.dll"

При успешной регистрации появится диалоговое окно с сообщением «DllRegisterServer в файле ... выполнена успешно». Если вместо этого появилась ошибка — запомните её код: по нему определяется причина сбоя (об этом ниже).

Порядок регистрации DLL для 1С
  1. 1
    Скопируйте DLL в постоянную папку с понятным путём без кириллицы и пробелов в идеале
  2. 2
    Определите разрядность DLL и клиента 1С
  3. 3
    Откройте командную строку от имени администратора
  4. 4
    Выполните regsvr32 с полным путём к файлу (для 32-битной DLL на 64-битной Windows используйте C:\Windows\SysWOW64\regsvr32.exe)
  5. 5
    Убедитесь, что появилось сообщение об успешной регистрации
  6. 6
    Перезапустите 1С и проверьте подключение компоненты

Особенности разрядности: SysWOW64 против System32

Главный нюанс 64-битной Windows — неочевидное расположение утилит regsvr32. В папке C:\Windows\System32 находится 64-битная версия regsvr32, а в папке C:\Windows\SysWOW64 — 32-битная. Названия папок исторически противоречат интуиции, и это источник постоянной путаницы.

Правило простое: разрядность regsvr32 должна совпадать с разрядностью регистрируемой DLL. Регистрируете 32-битную компоненту для 32-битного клиента 1С — вызывайте C:\Windows\SysWOW64\regsvr32.exe. Регистрируете 64-битную — используйте C:\Windows\System32\regsvr32.exe.

cmd
C:\Windows\SysWOW64\regsvr32.exe "C:\Components\MyComponent32.dll"

Если запустить regsvr32 просто по имени из командной строки на 64-битной системе, по умолчанию вызовется 64-битная версия. Попытка зарегистрировать ей 32-битную DLL обычно завершается ошибкой о несоответствии разрядности. Поэтому при сомнениях всегда указывайте полный путь к нужной версии утилиты.

Регистрация средствами самой 1С и Native API

Не все компоненты для 1С требуют ручной регистрации через regsvr32. Современные внешние компоненты по технологии Native API поставляются в виде ZIP-архива, который добавляется в конфигурацию как макет. Такая компонента подключается программно методом ПодключитьВнешнююКомпоненту с указанием макета, и платформа сама загружает нужную версию библиотеки без записи в реестр.

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

Ручная регистрация через regsvr32 нужна для классических COM-компонентов: старых драйверов сканеров, библиотек криптографии, самописных COM-объектов, которые подключаются методом СоздатьОбъект или через COMСоединитель-подобные механизмы.

Способы подключения компоненты

regsvr32 вручную

Подходит для классических COM-DLL. Требует прав администратора, путь к файлу фиксируется в реестре

Макет Native API в конфигурации

Не требует регистрации в системе, работает у обычного пользователя, но компонента должна быть собрана по технологии Native API

Автоустановка из конфигурации

Удобно для типовых драйверов оборудования; зависит от того, предусмотрена ли такая установка разработчиком конфигурации

Типовые ошибки регистрации и их устранение

Ошибка 0x80070005 (отказано в доступе) означает, что командная строка запущена без прав администратора. Закройте окно и перезапустите его через «Запуск от имени администратора». Если права ограничены политикой организации, регистрацию должен выполнить системный администратор.

Ошибка 0x80004005 — универсальный код сбоя. Чаще всего причины те же: недостаток прав, неверный путь к файлу, кириллица или пробелы в пути при кривой реализации компоненты, либо отсутствие зависимых библиотек, от которых зависит DLL. Проверьте путь, перенесите файл в простую папку и повторите попытку.

Сообщение «Модуль загружен, но точка входа DllRegisterServer не найдена» означает, что файл не является саморегистрируемойся COM-компонентой. Возможно, вы пытаетесь зарегистрировать обычную библиотеку или Native API компоненту — такие файлы подключаются иначе, и regsvr32 для них не предназначен.

Ошибка о несоответствии разрядности («не является приложением Win32» или похожие формулировки) указывает, что вызвана regsvr32 не той разрядности. Используйте SysWOW64 для 32-битных и System32 для 64-битных библиотек.

Типичные ошибки при регистрации DLL для 1С
01
Регистрация без прав администратора — ошибка 0x80070005 и запись в реестр не выполняется
02
Использование regsvr32 не той разрядности — компонента регистрируется не в том разделе реестра, и 1С её не видит
03
Регистрация файла из временной папки — после очистки папки компонента перестаёт работать
04
Попытка зарегистрировать Native API компоненту через regsvr32 — ошибка «точка входа не найдена», хотя файл исправен
05
Регистрация 32-битной DLL при 64-битном клиенте 1С — регистрация успешна, но подключение в 1С невозможно

Как проверить результат и отменить регистрацию

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

Если подключение прошло без исключения и объект создан, регистрация работает. Если 1С сообщает, что компонента не найдена, вернитесь к проверке разрядности и убедитесь, что регистрация действительно завершилась успешным сообщением, а не ошибкой.

Для отмены регистрации используется та же утилита с ключом /u. Это полезно при замене версии компоненты или при переносе файла в другую папку: сначала снимите регистрацию со старого пути, затем зарегистрируйте файл из нового расположения.

cmd
regsvr32 /u "C:\Components\MyComponent.dll"
Контрольные точки

Как проверить результат

Сообщение regsvr32 после команды
Норма

«DllRegisterServer выполнена успешно»

Тревожный признак

Код ошибки 0x80070005, 0x80004005 или сообщение о точке входа

Подключение в 1С
Норма

Объект компоненты создаётся без исключения

Тревожный признак

«Компонента не найдена» или «Не удалось создать объект»

Путь к файлу после регистрации
Норма

Файл лежит в постоянной папке и не перемещался

Тревожный признак

Файл удалён или перенесён — регистрация указывает в пустоту

Частые вопросы

Нужно ли регистрировать DLL на сервере 1С или на клиенте?

Регистрировать нужно там, где выполняется код, обращающийся к компоненте. Если компонента вызывается в клиентском коде — на каждом клиентском компьютере. Если вызов идёт на сервере 1С — регистрация требуется на сервере, причём разрядность DLL должна совпадать с разрядностью серверного процесса.

Почему regsvr32 пишет «успешно», а 1С компоненту не видит?

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

Можно ли зарегистрировать DLL без прав администратора?

Штатная regsvr32 пишет в HKEY_CLASSES_ROOT и требует повышенных прав. Существуют механизмы регистрации COM на уровне пользователя, но они требуют специальной подготовки манифестов и в типовом сценарии с 1С не применяются. Практичный путь — попросить администратора выполнить регистрацию.

Чем отличается COM-компонента от Native API компоненты?

COM-компонента регистрируется в реестре Windows и создаётся как COM-объект. Native API — технология 1С, при которой библиотека подключается платформой напрямую из макета или файла без записи в реестр, что упрощает развёртывание и не требует прав администратора.

Нужно ли регистрировать DLL заново после обновления платформы 1С?

Обычно нет: регистрация хранится в реестре Windows и не зависит от версии платформы. Перерегистрация нужна только при замене самого файла компоненты, изменении его расположения или переустановке системы.

Что делать, если один и тот же файл нужен и 32-битному, и 64-битному клиенту?

Одна DLL не может обслуживать обе разрядности. Потребуются две версии библиотеки от поставщика: 32-битную регистрируйте через SysWOW64\regsvr32.exe, 64-битную — через System32\regsvr32.exe. Обе регистрации могут сосуществовать в системе одновременно.

Итог

Что важно запомнить

Регистрация DLL для 1С выполняется командой regsvr32 из командной строки с правами администратора, причём разрядность утилиты, библиотеки и клиента 1С должна совпадать. На 64-битной Windows 32-битные компоненты регистрируются через SysWOW64\regsvr32.exe. Компоненты Native API регистрации не требуют и подключаются из макета. Успех проверяется созданием объекта компоненты в 1С после её перезапуска.