2015-11-05 32 views
2

在網上搜索沒有成功後,這是我的問題。COMException(0x800401E3):操作不可用(例外HRESULT:0x800401E3(MK_E_UNAVAILABLE))與計劃的任務

我有一個任務,我想安排從Outlook中檢索電子郵件的附件並提取數據。 當我手動啓動任務,但每當我試圖通過計劃任務來啓動它,它失敗,出現錯誤它工作正常:

收到COMException(0x800401E3):操作不可用(從HRESULT異常: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文件,參數從程序)但他們都失敗了。 它使用與手動啓動任務相同的帳戶啓動。

有人可以幫助我嗎?任何幫助,將不勝感激! 乾杯!

+0

而拋出的異常在哪裏? – Richard

+0

嘗試以管理員身份運行Outlook和VS。它爲我工作。希望這可以幫助。 –

+0

通過Windows服務運行時可能出現[操作不可用(異常來自HRESULT:0x800401E3(MK \ _E \ _UNAVAILABLE))](https://stackoverflow.com/questions/37589935/operation-unavailable-exception-from-hresult -0x800401e3-mk-e-unavailable-wh) – Gokul

回答

2

微軟目前並不提倡,不支持,Microsoft Office應用程序自動化從任何無人蔘與的非交互式客戶端應用程序或組件(包括ASP,ASP.NET,DCOM和NT Service),因爲Office在此環境中運行時可能會出現不穩定的行爲和/或死鎖。

如果您正在構建一個在服務器端上下文中運行的解決方案,那麼您應該嘗試使用對於無人執行安全的組件。或者,您應該嘗試找到允許至少部分代碼運行客戶端的替代方案。如果您從服務器端解決方案使用Office應用程序,則該應用程序將缺少成功運行所需的許多必要功能。此外,您將面臨整體解決方案穩定性的風險。請閱讀Considerations for server-side Automation of Office文章中的更多內容。

您可以考慮使用底層API(或任何其他第三方包裝器) - 基於Outlook的擴展MAPI。或Exchange配置文件中的EWS,請參閱EWS Managed API, EWS, and web services in Exchange以獲取更多信息。

+0

謝謝我會嘗試其中的一種! –

0

只是一對夫婦的想法:

  1. 這可能是一個GUI的問題。根據this answer,GUI任務不能從計劃任務運行。可能有解決方法,但我不知道。

  2. 它可能是上下文或權限問題。您在任務中配置了哪些設置,它們與在任務計劃程序外部運行任務時的設置相同嗎?

+0

由於GUI問題,它並不清楚。 @Eugene的回答是原因。 – Gokul