1С V81.Application COM-понент на x64-сервере

При переносе сервера CRM на новую архитектуру столкнулся с очень интресной проблемой. Для интеграции CRM - 1С требуется установленный на сервере клиент 1С. С x86-машинами вопросов не возникало - необходимые компоненты регистрировались при инсталляции и были готовы к использованию.

Службы компонентов в консоли управления MMC

При разворачивании компонентов 1С на x64-сервере, запустив оснастку "Службы компонентов" необходимые компоненты не наблюдались, хотя все соответствующие ключи в реестре регистрировались (CLSID компонентов).

Запуск консоли управления MMC

Стоит отметить, что клиентская часть 1С доступна только в x86-архитектуре.

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

System.UnauthorizedAccessException: Сбой при получении производства объектов класса COM для компонента с CLSID {B3A7D9DB-3CBA-47F4-B80A-5DDA79D8925A} в результате следующей ошибки: 80070005.
   в System.RuntimeTypeHandle.CreateInstance(RuntimeType type, Boolean publicOnly, Boolean noCheck, Boolean& canBeCached, RuntimeMethodHandle& ctor, Boolean& bNeedSecurityCheck)
   в System.RuntimeType.CreateInstanceSlow(Boolean publicOnly, Boolean fillCache)
   в System.RuntimeType.CreateInstanceImpl(Boolean publicOnly, Boolean skipVisibilityChecks, Boolean fillCache)
   в System.Activator.CreateInstance(Type type, Boolean nonPublic)
                

Решение проблемы оказалось простым - запустить 32-битную консоль управления MMC и вручную добавить соответствующую оснастку. После чего получаем доступ к настройке желанного V81.Application.

Запуск Службы компонентов в 32-битной консоли управления MMC

Команда для вызова 32-битной оснастки MMC:

mmc -32
Русский
field_vote: 
3
Average: 2.8 (8 votes)

Добавить комментарий