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

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

Как зарегистрировать comcntr.dll на 64-битном сервере 1С

Пошаговая регистрация comcntr.dll на 64-разрядном сервере: regsvr32, версии 1С, типичные ошибки 0x80070005 и способы проверки COM-соединителя.

Библиотека comcntr.dll — это COM-коннектор 1С:Предприятия, через который внешние приложения, скрипты и другие базы 1С подключаются к информационной базе извне. Если при создании объекта V83.COMConnector вы получаете ошибку «Класс не зарегистрирован» или 0x80040154, почти всегда причина в том, что библиотека не зарегистрирована в системе либо зарегистрирована не той разрядности. На 64-битном сервере этот момент особенно важен, потому что в системе одновременно существуют 32- и 64-разрядные среды выполнения.

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

Что такое comcntr.dll и когда её нужно регистрировать

COM-коннектор реализован в файле comcntr.dll, который устанавливается вместе с платформой 1С:Предприятие. Через него создаётся COM-объект V83.COMConnector (для платформы 8.3), позволяющий подключаться к базам из VBScript, PowerShell, 1С:Скрипта, других конфигураций 1С и сторонних программ, поддерживающих COM.

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

Где находится comcntr.dll на сервере

Файл лежит в каталоге bin установленной версии платформы. Типовые пути выглядят так: C:\Program Files\1cv8\8.3.22.1750\bin\comcntr.dll — для 64-разрядной платформы и C:\Program Files (x86)\1cv8\8.3.22.1750\bin\comcntr.dll — для 32-разрядной. Номер версии в пути у вас будет свой, поэтому сначала откройте каталог установки и уточните точный путь.

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

Пошаговая регистрация через regsvr32

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

Откройте командную строку от имени администратора: меню «Пуск» → введите cmd → правый клик → «Запуск от имени администратора». Затем выполните команду, подставив свой путь:

regsvr32 "C:\Program Files\1cv8\8.3.22.1750\bin\comcntr.dll"

Кавычки обязательны, потому что в пути есть пробелы. При успехе появится диалоговое окно «DllRegisterServer в ... успешно выполнено». Это и есть признак корректной регистрации — никаких дополнительных действий для самой библиотеки не требуется.

Порядок регистрации
  1. 1
    Найдите comcntr.dll в каталоге bin нужной версии платформы
  2. 2
    Откройте командную строку от имени администратора
  3. 3
    Выполните regsvr32 с полным путём к DLL в кавычках
  4. 4
    Убедитесь, что появилось сообщение об успешной регистрации
  5. 5
    Проверьте создание объекта V83.COMConnector тестовым скриптом
batch
regsvr32 "C:\Program Files\1cv8\8.3.22.1750\bin\comcntr.dll"

Разрядность: какую regsvr32 и какую DLL использовать

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

Правило выбора простое: разрядность comcntr.dll должна совпадать с разрядностью процесса, который будет создавать COM-объект. Если коннектор вызывается из 64-разрядного сервера 1С или 64-битного приложения — регистрируйте DLL из Program Files через System32\regsvr32. Если вызывающее приложение 32-битное (например, 32-разрядный клиент 1С или старая утилита) — регистрируйте DLL из Program Files (x86) через SysWOW64\regsvr32. Обе регистрации могут сосуществовать одновременно и не мешают друг другу.

Какой вариант регистрации выбрать

64-битная DLL + System32\regsvr32

Подходит, когда COM-коннектор используется сервером 1С (x64) или 64-разрядными приложениями. Стандартный сценарий для современного сервера.

32-битная DLL + SysWOW64\regsvr32

Нужна, если коннектор вызывает 32-разрядное приложение или 32-битный клиент 1С. Требует установленной 32-разрядной платформы.

Регистрация обеих разрядностей

Оптимально, когда на сервере работают и 32-, и 64-битные потребители коннектора. Регистрации не конфликтуют.

Проверка успешной регистрации

После регистрации убедитесь, что COM-объект действительно создаётся. Самый быстрый способ — короткий скрипт на VBScript или PowerShell, который только создаёт объект без подключения к базе:

powershell -command "New-Object -ComObject V83.COMConnector"

Если команда завершилась без ошибок — коннектор зарегистрирован и доступен. Ошибка 0x80040154 (REGDB_E_CLASSNOTREG, «класс не зарегистрирован») означает, что регистрация не прошла или выполнена не для той разрядности, под которой запущен PowerShell. Учтите: 64-битный PowerShell видит только 64-битную регистрацию, а PowerShell (x86) — только 32-битную.

Контрольные точки

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

Сообщение regsvr32
Норма

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

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

Код ошибки 0x80070005 или 0x80004005

Создание COM-объекта
Норма

New-Object -ComObject V83.COMConnector выполняется без ошибок

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

Ошибка 0x80040154 «класс не зарегистрирован»

Разрядность теста
Норма

Тест запущен в той же разрядности, что и будущее приложение

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

Тест в 64-битном PowerShell, а приложение 32-битное — результаты не сопоставимы

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

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

Ошибка «Не удалось загрузить модуль» обычно указывает на неверный путь, отсутствие файла или попытку зарегистрировать 32-битную DLL 64-битной regsvr32 (и наоборот). Проверьте путь через проводник и убедитесь, что используете regsvr32 из правильного системного каталога. Также встречается ситуация, когда антивирус блокирует запись в реестр — тогда regsvr32 сообщает об успехе, но объект не создаётся; проверьте журнал антивируса.

Типичные ошибки
01
Запуск regsvr32 без прав администратора — ошибка 0x80070005 и отсутствие записей в реестре
02
Регистрация 32-битной DLL через System32\regsvr32 — ошибка загрузки модуля, коннектор недоступен 32-битным приложениям
03
Путь без кавычек — команда обрывается на первом пробеле и не находит файл
04
Регистрация DLL из старой версии платформы после обновления — внешние приложения работают через устаревший коннектор
05
Проверка в PowerShell другой разрядности — ложный вывод, что регистрация не сработала

Альтернативы и особые сценарии

Если ручная регистрация нежелательна, можно переустановить платформу через штатный инсталлятор, отметив компонент регистрации COM-соединения — установщик выполнит всё сам и с корректной разрядностью. Это предпочтительный путь на серверах, где важна воспроизводимость настройки.

Для сценария «одна база 1С подключается к другой» убедитесь, что коннектор зарегистрирован на том сервере, где исполняется код, создающий COM-объект, — то есть на сервере приложений 1С, если соединение инициируется серверным кодом. Регистрация на клиентской машине в этом случае не поможет. Наконец, учтите, что COM-коннектор — не единственный способ интеграции: для новых решений часто удобнее HTTP-сервисы или веб-сервисы 1С, которые не требуют регистрации библиотек и работают кроссплатформенно, в том числе на Linux.

Маршрут решения

Как выбрать действие

Ошибка «класс не зарегистрирован» после обновления платформыЗарегистрируйте comcntr.dll из каталога bin новой версии через regsvr32 от имени администратора
32-битное приложение не видит коннектор на 64-битном сервереУстановите 32-разрядную платформу и зарегистрируйте её DLL через SysWOW64\regsvr32
regsvr32 выдаёт 0x80070005Перезапустите командную строку от имени администратора и повторите команду
Нужна интеграция без привязки к Windows и COMРассмотрите HTTP-сервисы 1С вместо COM-коннектора

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

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

Штатными средствами — нет: регистрация COM-классов требует записи в системную ветку реестра. Если прав нет, обратитесь к администратору сервера либо используйте альтернативные механизмы интеграции, например HTTP-сервисы.

Что делать, если на сервере несколько версий платформы 1С?

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

Почему после успешной регистрации всё равно ошибка 0x80040154?

Чаще всего несовпадение разрядности: DLL зарегистрирована как 64-битная, а приложение, создающее объект, работает в 32-битном режиме (или наоборот). Зарегистрируйте библиотеку нужной разрядности через соответствующую копию regsvr32.

Нужно ли перезагружать сервер после регистрации?

Перезагрузка не требуется — регистрация вступает в силу сразу. Достаточно перезапустить приложения и службы, которые будут использовать коннектор, чтобы они подхватили новые записи реестра.

Где взять comcntr.dll, если файла нет в каталоге платформы?

Файл поставляется только в составе дистрибутива платформы 1С:Предприятие. Переустановите платформу из официального дистрибутива, убедившись, что выбран компонент COM-соединения. Скачивать библиотеку со сторонних ресурсов небезопасно.

Работает ли COM-коннектор на Linux-сервере 1С?

Нет, COM — технология Windows, и comcntr.dll существует только для Windows. Для интеграций на Linux используйте HTTP-сервисы, веб-сервисы или файловый обмен.

Итог

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

Регистрация comcntr.dll выполняется командой regsvr32 с полным путём из каталога bin нужной версии платформы и только от имени администратора. На 64-битном сервере критично совпадение разрядности DLL, regsvr32 и вызывающего приложения. Успех проверяется созданием объекта V83.COMConnector в той же разрядности, в которой будет работать прикладной код.