Назад | Перейти на главную страницу

Com DLL случайно становится незарегистрированной

У нас есть приложение VB6, которое использует COM-объект для связи с пакетом электронной почты. Приложение работает автономно, и каждый раз в синюю луну COM DLL становится незарегистрированной. Быстрый вызов RegSvr32, и система вернулась к нормальной работе. Мы попытались реализовать быстрое исправление, которое регистрирует DLL каждый раз, когда она понадобится приложению, но, похоже, это не сработало.
Это стало большим раздражением.

Если вам интересно, приложение просто вызывает команду оболочки.

Shell "regsvr32 /s " & """" & pathName & """"

Кто-нибудь знает, что может привести к отмене регистрации COM DLL?

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

ИЛИ что-то отменяет регистрацию, или другая версия, более новая или более старая того же объекта com, работает и автоматически регистрирует com по тому же пути, что и исполняемый файл, это странно, но это может произойти

И одно из них не запустится, если будут выполнены оба приложения, одно выйдет из строя

Файлы VB6 com автоматически регистрируются, если файл com находится на том же пути, что и исполняемый файл

У меня есть решение этой проблемы. Пакет электронной почты - это Outlook, и это ключ к решению проблемы. Фактически, COM-объект не терял регистрацию в системе, которую он не мог загрузить в Outlook, что, по-видимому, является более частым, хотя и редким явлением. По-видимому, бывают странные ситуации, когда Outlook просто перестает загружать надстройки COM вместе.

Ссылка на статью в базе знаний KB945743

Решение состоит в том, чтобы выгрузить COM-объект из Outlook и перезагрузить его.

Просто предположение, но зарегистрирована ли DLL или, что более вероятно, другая версия той же DLL в другом месте файла? Для COM-DLL, если бы она была той же версии и вызывалась нормально (по GUID или имени), это не имело бы значения, я не думаю, но стоит проверить.