2017-02-13 64 views
0

當我的產品嚐試通過進程外Outlook COM對象和Redemption COM對象訪問Outlook時,我的一些客戶遇到此錯誤。訪問Outlook COM對象導致錯誤0x80080005 CO_E_SERVER_EXEC_FAILURE

我讀過如果我的產品和Outlook運行在不同的權限級別(例如,Outlook作爲管理員,我的產品是標準用戶),則會發生此錯誤。還有其他可能的原因嗎?

這裏的錯誤調用堆棧:

System.Runtime.InteropServices.COMException(0x80080005):檢索COM類工廠CLSID {0006F03A-0000-0000-C000-000000000046}組件失敗,原因是以下錯誤:80080005服務器執行失敗(HRESULT異常:0x80080005(CO_E_SERVER_EXEC_FAILURE))。

System.Runtime.Remoting.RemotingServices.AllocateUninitializedObject(RuntimeType的objectType)

System.Runtime.Remoting.Activation.ActivationServices.CreateInstance(RuntimeType服務器類型)

System.Runtime.Remoting.Activation.ActivationServices。 IsCurrentContextOK(RuntimeType服務器類型,對象[]道具,布爾bNewObj)

System.RuntimeTypeHandle.CreateInstance(RuntimeType類型,布爾publicOnly,布爾NOCHECK,布爾& canBeCached,RuntimeMethodHandleInternal &構造函數,布爾& bNeedSecurityCheck)在System.RuntimeType。 CreateInstanceSlow(博齊墩果publicOnly,布爾skipCheckThis,布爾fillCache,StackCrawlMark & stackMark)在
System.RuntimeType.CreateInstanceDefaultCtor
(布爾publicOnly,布爾skipCheckThis,布爾fillCache,StackCrawlMark & stackMark)

System.Activator.CreateInstance(類型類型布爾非公開)

System.Activator.CreateInstance(類型類型)

+0

這個問題是出了名的錯誤的調試結束。Outlook啓動時崩潰並燒燬。你不知道爲什麼。它沒有碰撞的習慣,但它發生。如果重新啓動機器不能修復它,那麼用戶應該重新安裝它。最好留給IT員工。 –

回答

0

這可能是因爲外的進程內的對象(Outlook)中墜毀,並在您的地址過程中的COM代理可以不再說話它或因爲本身好奇的背景是不同的。

+0

在這種情況下,客戶被告知運行Outlook安裝程序的修復功能,這似乎解決了這個問題。 – Jeff

0

你在哪裏嘗試自動化Outlook?

由於Office可能會展示,Microsoft目前不推薦並不支持來自任何無人蔘與的非交互式客戶端應用程序或組件(包括ASP,ASP.NET,DCOM和NT服務)的Microsoft Office應用程序自動化Office在此環境中運行時不穩定的行爲和/或死鎖。

如果您正在構建一個在服務器端上下文中運行的解決方案,則應該嘗試使用對於無人執行安全的組件。或者,您應該嘗試找到允許至少部分代碼運行客戶端的替代方案。如果您從服務器端解決方案使用Office應用程序,則該應用程序將缺少成功運行所需的許多必要功能。此外,您將面臨整體解決方案穩定性的風險。請閱讀​​文章中的更多內容。您可以考慮在服務器端使用低級API(擴展MAPI),而不是使用OOM。

此外,您可能會發現When CoCreateInstance returns 0x80080005 (CO_E_SERVER_EXEC_FAILURE)文章,其中描述了類似的問題很有幫助。

+0

我的問題是關於Windows Forms桌面遺留應用程序,該應用程序是在Microsoft確實支持通過進程外COM訪問Outllook時編寫的。感謝您的建議。 – Jeff

+0

通過out-of-process COM的Outllook現在也可以訪問。但是這篇文章描述了一個服務器端上下文的可能案例。 –

相關問題