访问Outlook COM对象会导致错误0x80080005 CO_E_服务器执行失败

访问Outlook COM对象会导致错误0x80080005 CO_E_服务器执行失败,outlook,com,outlook-redemption,Outlook,Com,Outlook Redemption,当我的产品尝试通过进程外Outlook COM对象和赎回COM对象访问Outlook时,我的一些客户会遇到此错误 我了解到,如果我的产品和Outlook以不同的权限级别运行(例如,Outlook作为管理,我的产品作为标准用户),则可能会发生此错误。还有其他可能的原因吗 以下是错误调用堆栈: System.Runtime.InteropServices.COMException(0x80080005):检索CLSID为{0006F03A-0000-0000-C000-0000000000 46}的

当我的产品尝试通过进程外Outlook COM对象和赎回COM对象访问Outlook时,我的一些客户会遇到此错误

我了解到,如果我的产品和Outlook以不同的权限级别运行(例如,Outlook作为管理,我的产品作为标准用户),则可能会发生此错误。还有其他可能的原因吗

以下是错误调用堆栈:

System.Runtime.InteropServices.COMException(0x80080005):检索CLSID为{0006F03A-0000-0000-C000-0000000000 46}的组件的COM类工厂失败,原因是以下错误:80080005服务器执行失败(HRESULT异常:0x80080005(CO_E_服务器执行失败))。
位于
System.Runtime.Remoting.RemotingServices.AllocateUninitializedObject(RuntimeType objectType)
位于
System.Runtime.Remoting.Activation.ActivationServices.CreateInstance(RuntimeType serverType)
位于
System.Runtime.Remoting.Activation.ActivationServices.IsCurrentContextOK(RuntimeType服务器类型,对象[]道具,布尔bNewObj)

System.RuntimeType.CreateInstanceSlow(Boolean publicOnly,Boolean skipCheckThis,Boolean fillCache,StackScrawlMark&stackMark)上的System.RuntimeTypeHandle.CreateInstance(RuntimeType类型,Boolean publicOnly,Boolean noCheck,Boolean&CanBeCache,RuntimeMethodHandleInternal&ctor,Boolean&bNeedSecurityCheck)

System.RuntimeType.CreateInstanceDefaultCtor(布尔publicOnly、布尔skipCheckThis、布尔fillCache、StackScrawlMark和stackMark)

System.Activator.CreateInstance(类型,布尔非公共)


System.Activator.CreateInstance(Type Type)

这可能是因为进程外对象(Outlook)崩溃,地址进程中的COM代理无法再与之通信,或者是因为安全上下文不同

在哪里尝试自动化Outlook

Microsoft目前不建议也不支持从任何无人参与、非交互式客户端应用程序或组件(包括ASP、ASP.NET、DCOM和NT服务)自动化Microsoft Office应用程序,因为在该环境中运行Office时,Office可能会表现出不稳定的行为和/或死锁

如果您正在构建一个在服务器端上下文中运行的解决方案,那么您应该尝试使用安全的组件来无人值守地执行。或者,您应该尝试找到至少允许部分代码在客户端运行的替代方案。如果使用服务器端解决方案中的Office应用程序,该应用程序将缺少许多成功运行所需的功能。此外,您将面临整体解决方案稳定性方面的风险。在文章中阅读更多关于这方面的内容。您可以考虑使用低级API(扩展MAPI)来使用服务器端而不是OOM。p>
此外,您可能会发现描述类似问题的文章很有帮助

众所周知,这个问题是从错误的一端调试出来的。Outlook在启动时崩溃并烧毁。你不知道为什么。它并没有崩溃的习惯,但它确实发生了。如果重新启动计算机无法解决问题,则用户应重新安装。最好留给IT人员。我的问题是关于Windows窗体桌面遗留应用程序,该应用程序是在Microsoft确实支持通过进程外COM访问Outllook时编写的。谢谢你的建议。现在也可以通过进程外COM访问Outllook。但是这篇文章描述了一个服务器端上下文的可能情况。在这种情况下,客户被告知运行Outlook安装程序的修复功能,这似乎解决了这个问题。