我们有一个使用COM对象与电子邮件包通信的VB6应用程序。 该应用程序自主运行,每一次在蓝色的月亮COM DLL似乎变成未注册。 RegSvr32和系统的快速调用重新开始。 我们尝试实施一个快速修复,每次应用程序需要时都会注册该DLL,但似乎没有奏效。
这已经变得非常烦人了。
如果你想知道应用程序只是调用一个shell命令。
Shell "regsvr32 /s " & """" & pathName & """"
有没有人有什么可以导致一个COM DLL成为未注册的想法?
由于病毒扫描程序和反间谍软件,我已经看到COM DLL发生奇怪的事情。 如果可以,请尝试禁用这些应用程序(如果有)。
只是一个猜测,但是在不同的文件位置注册的DLL,或更可能是相同的DLL的另一个版本? 对于一个COM DLL,如果它是相同的版本,并被正常调用(通过GUID或名称)应该不重要,我不认为,但值得检查。
我现在有一个解决这个问题的方法。 电子邮件包是Outlook,这是问题的关键。 COM对象实际上并没有在系统中未注册,但在Outlook中加载失败,这似乎是一个比较常见的事件,尽pipe这种情况还很less见。 显然有一些奇怪的情况,前景将停止加载COM添加到一起。
有关知识库文章KB945743的链接
解决方法是从Outlook卸载COM对象并重新加载它。
或有东西是注销它或另一个版本更旧或更旧的同一个COM对象正在运行和autoregister在可执行文件的相同path的com,这是奇怪的,但这可能发生
如果两个应用程序都执行,其中一个将不会运行,一个将失败
如果com文件位于可执行文件的相同path中,则会自动注册VB6 com文件