Получение ошибки «Невозможно создать компонент ActiveX» даже после регистрации компонента COM в реестре - PullRequest
0 голосов
/ 19 января 2020

У меня есть windows служба, написанная на c#. Эта служба размещена на Windows Server 2016.
Эта служба выполняет некоторые вычисления для каждых равных интервалов времени. Чтобы выполнить этот расчет, он открывает Приложение в фоновом режиме называется AutoCal, которое является компонентом COM.
Приложение установлено на сервере, и его dll добавляется в качестве ссылки в службу.

Сначала машина имела версию V4.1. Я написал следующий код, чтобы открыть приложение.

(AutoCal.Application)Interaction.CreateObject("AutoCal.Application.NewInstance")

Раньше оно открывалось в фоновом режиме и работало отлично, как и ожидалось. Теперь версия приложения обновлена ​​до V4.2 и удалена старая версия.

Когда я запускаю ту же службу, она выдает исключение:

Невозможно создать компонент ActiveX.

После поиска я изменил приведенный выше код этой строки показывает, работает ли он:

(AutoCal.Application)Activator.CreateInstance(Type.GetTypeFromProgID("AutoCal.Application.NewInstance"))

Но это приводит к совершенно другой ошибке, как показано ниже.

Получение фабрики классов COM для компонента с CLSID {xxxxxx-xxxxx-xxxxxx-xxxxxxx} не выполнен из-за следующей ошибки: 80080005 Ошибка выполнения сервера (исключение из HRESULT: 0x80080005 (CO_E_SERVER_EXEC_FAILURE)) *

Я искал эту ошибку и подтвердил, что новый v4.2 зарегистрирован или нет. Я заметил, что только V4.1 я зарегистрирован в реестре по адресу:

HKEY_LOCAL_MACHINE \ SOFTWARE \ WOW6432Node \ CompanyName \ AutoCal \ V4.1.

Итак, я зарегистрировал V4.2, используя: cd windows\SysWOW64 --> regsvr32 "Path of .ocx file"

Даже тогда он выдавал ошибку.

Кроме того, я попытался создать код службы окна X86 вместо AnyCPU и развернуть его на сервере, поскольку приложение AutoCal также является 32-разрядным приложением. Но это тоже не сработало.

Есть ли что-то еще, чего мне не хватает, чтобы это сработало. Любая помощь в этом отношении очень полезна. Спасибо.

PS: Сервер - это 64-битный компьютер, AutoCal - 32-битное приложение, если эта информация полезна.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...