Почему V83.COMConnector не появляется в службах компонентов после регистрации comcntr.dll?

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

При настройке программной интеграции с 1С:Предприятием через COM-соединение часто возникает ситуация: мы успешно выполняем команду регистрации библиотеки comcntr.dll с помощью системной утилиты regsvr32, получаем сообщение об успехе, однако при открытии оснастки «Службы компонентов» (Component Services / dcomcnfg) нужный компонент V83.COMConnector в списке отсутствует. Разберем подробно, почему так происходит, как устроена регистрация внутрипроцессных серверов и в каких случаях действительно требуется ручная настройка COM+.

Разница между регистрацией в системном реестре и службами компонентов COM+

Проанализируем базовый принцип работы утилиты regsvr32. Данная программа предназначена исключительно для вызова функций саморегистрации внутрипроцессных COM-серверов (ActiveX, DLL) в системном реестре Windows. При успешном выполнении команды данные о библиотеке записываются в ветки реестра HKEY_CLASSES_ROOT\CLSID и HKEY_CLASSES_ROOT\V83.COMConnector.

Оснастка «Службы компонентов» управляет специализированными COM+-приложениями, работающими в изолированных процессах (dllhost.exe), с пулами потоков, ролевой безопасностью и поддержкой транзакций. Вызов regsvr32 не создает и не должен создавать отдельное приложение в оснастке «Службы компонентов». Если библиотека успешно зарегистрирована в реестре, объект V83.COMConnector уже готов к работе и может вызываться из программного кода 1С или внешних скриптов.

Правильная регистрация comcntr.dll с учетом разрядности ОС и платформы

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

Разберем по шагам регистрацию в зависимости от разрядности:

  1. 64-разрядная платформа 1С на 64-разрядной ОС Windows:

    Используем 64-битную версию утилиты из системной папки System32:

    
    C:\Windows\System32\regsvr32.exe "C:\Program Files\1cv8\8.3.X.XXXX\bin\comcntr.dll"
    
  2. 32-разрядная платформа 1С на 64-разрядной ОС Windows:

    В 64-разрядных системах для регистрации 32-битных библиотек в ветке SysWOW64 необходимо явно вызывать утилиту из каталога SysWOW64:

    
    C:\Windows\SysWOW64\regsvr32.exe "C:\Program Files (x86)\1cv8\8.3.X.XXXX\bin\comcntr.dll"
    
  3. Дополнительная регистрация исполняемого файла платформы:

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

    "C:\Program Files\1cv8\8.3.X.XXXX\bin\1cv8.exe" /RegServer

Когда необходимо вручную настраивать приложение в «Службах компонентов»?

Ручное добавление компонента в оснастку dcomcnfg требуется только в специфических сценариях архитектуры:

  1. Межразрядное взаимодействие: если 64-битный процесс (например, веб-сервер IIS или 64-битный сервер приложений) должен вызывать 32-битный COM-коннектор 1С. В этом случае COM+-обертка запускает библиотеку в суррогатном процессе нужной разрядности.
  2. Изоляция и права доступа: если необходимо запускать COM-соединение в изолированном пуле процессов от имени строго определенного сервисного пользователя Windows.
  3. Одновременная работа с разными версиями 1С: для параллельного использования баз на несовместимых релизах платформы через COM-соединители с уникальными ProgID.

Рассмотрим пошаговый процесс создания COM+-приложения, если такая необходимость возникла:

  1. Запускаем оснастку через меню «Выполнить» командой dcomcnfg.
  2. Переходим по дереву: Компьютеры → Мой компьютер → Приложения COM+.
  3. Нажимаем правой кнопкой мыши на ветку «Приложения COM+» и выбираем Создать → Приложение.
  4. В мастере создания выбираем «Установить новое приложение», указываем понятное имя (например, 1C_V83_COMConnector) и выбираем тип активации Серверное приложение.
  5. На этапе выбора удостоверения указываем конкретного пользователя с правами на запуск процессов и доступ к базам 1С.
  6. В созданной ветке приложения открываем папку Компоненты, нажимаем правой кнопкой и выбираем Создать → Компонент.
  7. Выбираем вариант «Установка новых компонентов» и указываем путь к файлу comcntr.dll из каталога bin установленной платформы 1С.
  8. В свойствах созданного приложения COM+ на вкладке «Безопасность» снимаем флаг «Принудительная проверка доступа для приложений» и выставляем уровень ограничений «Неограниченный».

Проверка работоспособности COM-соединения

После регистрации библиотеки в реестре (или настройки в COM+) проверим подключение из программного кода 1С:


Попытка
    COMСоединитель = Новый COMОбъект("V83.COMConnector");
    ПараметрыПодключения = "Srvr=""Server1C"";Ref=""TestBase"";Usr=""Администратор"";Pwd=""Password"";";
    БазаПодключение = COMСоединитель.Connect(ПараметрыПодключения);
    Сообщить("Подключение успешно установлено!");
Исключение
    Сообщить("Ошибка инициализации COM-соединения: " + ОписаниеОшибки());
КонецПопытки;

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

← На главную