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

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

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

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

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

4 ответа

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

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

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

Для ссылки на статью базы знаний KB945743

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

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

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

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

Другие вопросы по тегам