COMException(0x800401E3):具有计划任务的操作不可用(来自HRESULT的exception:0x800401E3(MK_E_UNAVAILABLE))

在网上搜索没有成功,这是我的问题。

我有一项任务,我想安排从outlook检索电子邮件的附件并提取数据。 当我手动启动任务时,它工作正常,但每当我尝试通过计划任务启动它时,它都会失败并显示错误:

COMException(0x800401E3):操作不可用(来自HRESULT的exception:0x800401E3(MK_E_UNAVAILABLE))

当程序尝试检索或创建Outlook实例时,会发生以下情况:

private Application GetApplicationObject() { Application application = null; if (Process.GetProcessesByName("OUTLOOK").Any()) { application = Marshal.GetActiveObject("Outlook.Application") as Application; } else { application = new Application(); } return application; } 

我尝试了几种方法(批处理文件,.exe文件,程序中的参数)但它们都失败了。 它是使用用于手动启动任务的相同帐户启动的。

有人能帮我吗 ? 任何帮助,将不胜感激! 干杯!

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

如果要构建在服务器端上下文中运行的解决方案,则应尝试使用已安全执行无人参与的组件。 或者,您应该尝试找到允许至少部分代码在客户端运行的替代方法。 如果从服务器端解决方案使用Office应用程序,则应用程序将缺少许多必要的function才能成功运行。 此外,您将承担整体解决方案稳定性的风险。 在服务器端自动化Office文章的注意事项中阅读更多相关信息。

您可以考虑使用低级API(或任何其他第三方包装) – Outlook所基于的扩展MAPI。 或者,对于Exchange配置文件,请参阅EWS,有关详细信息,请参阅Exchange中的EWS托管API,EWS和Web服务 。

只是几个想法:

  1. 这可能是一个GUI问题。 根据这个答案 ,GUI任务无法从计划任务运行。 可能有一个解决方法,但我不知道一个。

  2. 它可能是上下文或权限问题。 您在任务中配置了哪些设置,它们与在任务计划程序之外运行任务时的设置相同?