【问题标题】:0x80080005 In outlook 20130x80080005 展望 2013
【发布时间】:2015-12-21 04:26:31
【问题描述】:

我正在尝试使用 VS2013 和 c# 构建一个简单的 Outlook 插件 在 Outlook 2010 中运行良好,但在 Outlook 2013 中崩溃,并在此行出现此错误:

Outlook.application o = new Outlook.Application();

由于以下错误,检索具有 CLSID {0006F03A-0000-0000-C000-000000000046} 的组件的 COM 类工厂失败:80080005 服务器执行失败(来自 HRESULT 的异常:0x80080005 (CO_E_SERVER_EXEC_FAILURE))

VS和outlook在同一个用户下运行,操作系统是windows 7,相同的完整性级别。

谢谢, 马吕斯

【问题讨论】:

  • 我认为出现此错误是因为 Outlook 和应用程序在不同的用户权限级别上运行(其中一个是管理员,另一个是普通用户)
  • 感谢您的评论,我该如何纠正这个问题?

标签: c# outlook vsto


【解决方案1】:

以下陈述:

我正在尝试构建一个简单的 Outlook 插件

Outlook.application o = new Outlook.Application();

不兼容!

您需要使用插件中可用的Application 属性。如果您开发基于 VSTO 的插件,请查看插件类的 Application 属性。

无论如何,以下错误描述表明您尝试从 Windows 服务自动化 Outlook:

由于以下错误,检索 CLSID 为 {0006F03A-0000-0000-C000-000000000046} 的组件的 COM 类工厂失败:80080005 服务器执行失败(来自 HRESULT 的异常:0x80080005 (CO_E_SERVER_EXEC_FAILURE))

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

如果您要构建在服务器端上下文中运行的解决方案,您应该尝试使用已确保无人值守执行安全的组件。或者,您应该尝试找到允许至少部分代码在客户端运行的替代方案。如果您使用来自服务器端解决方案的 Office 应用程序,该应用程序将缺少许多成功运行所需的功能。此外,您将承担整体解决方案稳定性的风险。在Considerations for server-side Automation of Office 文章中阅读更多相关信息。

您可以考虑改用服务中的低级代码 - 扩展 MAPI 或围绕该 API 的任何第三方包装器。

【讨论】:

  • CO_E_SERVER_EXEC_FAILURE 并不意味着调用者正在服务中。这意味着被调用者(进程外 COM 服务器)可以处理调用 - 例如COM 服务器正在启动并连接到正在运行的实例将导致递归。
猜你喜欢
  • 2014-07-09
  • 1970-01-01
  • 2017-12-24
  • 1970-01-01
  • 2015-12-22
  • 1970-01-01
  • 1970-01-01
  • 2023-04-05
相关资源
最近更新 更多