2010-09-20 60 views
15

我試圖獲取當前運行的Outlook版本,或者在未運行Outlook的情況下啓動Outlook,但我在獲取或創建Outlook應用程序時遇到了一些問題對象在Windows 7中。我認爲這與在Vista和7中限制用戶權限有關。我正在使用Outlook 2010.在Windows 7中獲取/創建Outlook應用程序

編輯:這些錯誤只會出現,如果我已經有一個Outlook 2010實例已啓動。如果Outlook未啓動,應用程序可以平穩運行(它可以自行啓動Outlook實例)。

如果有人能告訴我如何正確獲取Outlook應用程序版本,那真的很有幫助。

我跑的代碼是一個長期的try-catch塊上引發異常保留:


try 
{ 
    // create an application instance of Outlook 
    oApp = new Microsoft.Office.Interop.Outlook.Application(); 
} 
catch(System.Exception ex) 
{ 
    try 
    { 
    // get Outlook in another way 
    oApp = Marshal.GetActiveObject("Outlook.Application") as Microsoft.Office.Interop.Outlook.Application; 
    } 
    catch (System.Exception ex2) 
    { 
    // try some other way to get the object 
    oApp = Activator.CreateInstance(Type.GetTypeFromProgID("Outlook.Application")) as Microsoft.Office.Interop.Outlook.Application; 
    } 
} 

的應用程序拋出我下面的例外:

當我嘗試創建一個新的Outlook應用實例:

Retrieving the COM class factory for component with CLSID {0006F03A-0000-0000-C000-000000000046} failed due to the following error: 80080005.

當我試圖讓Outlook應用實例:

Operation unavailable (Exception from HRESULT: 0x800401E3 (MK_E_UNAVAILABLE))

當我試圖通過激活

Retrieving the COM class factory for component with CLSID {0006F03A-0000-0000-C000-000000000046} failed due to the following error: 80080005.

感謝您創建一個實例!

回答

29

顯然這些錯誤是由於我在不同的用戶權限級別(其中一個是管理員而另一個是普通用戶)運行Outlook和應用程序而觸發的。

+3

安德烈我也有同樣的問題。你是如何解決它的?在我的情況下,即使未手動打開Outlook,它也會出現此錯誤「檢索具有CLSID {0006F03A-0000-0000-C000-000000000046}的組件的COM類工廠失敗,原因如下:80080005.」 – ANP 2011-10-13 09:28:17

+3

ANP,從我記得,這個錯誤被觸發是因爲我運行的是Outlook和以不同的用戶權限訪問Outlook的應用程序。對我而言,這是因爲我以管理員權限運行Visual Studio,並試圖檢索以普通權限(而不是管理員權限)啓動的Outlook。無論是那個還是那裏都存在一個我無法訪問的掛起的Outlook進程,因爲它是由另一個應用程序實例啓動的。 – Andrei 2011-10-13 15:28:40

+0

哇!感謝分享這個。對於相同的錯誤代碼,我有一個完全不同的問題,這很可能是確切的問題! – Keng 2013-01-28 19:34:41

1

看起來您的Office安裝已損壞。

嘗試通過以管理員身份重新運行安裝程序來修復安裝。

+1

不,沒有解決它。 – Andrei 2010-09-20 12:15:16

+0

如果沒有模態對話框阻止應用程序,是否會手動啓動Outlook?確保您使用您的應用程序正在使用的相同用戶帳戶進行測試。 – 2010-09-20 13:15:02

+0

Outlook可以手動啓動。這些錯誤顯然只有在手動啓動Outlook時纔會出現。 – Andrei 2010-09-20 14:43:26

3
  1. 在開始菜單中選擇運行
  2. 輸入dcomcnfg並點擊打開OK
  3. 組件服務窗口。
  4. 展開節點組件服務 - > MyComputer - > DCOM配置。
  5. 右鍵單擊應用程序(Outlook消息附件)並選擇屬性。
  6. 無論何種必要,請單擊標識選項卡。
  7. 點擊「交互式用戶」,然後確定
+2

你能擴展這個答案嗎? 「交互式用戶」做什麼? – chris 2012-09-30 23:07:30

+0

謝謝@Moustafa - 這有幫助 – 2015-12-14 16:16:26

+0

此解決方案適用於我。謝謝Moustafa – Ammad 2017-03-23 16:26:32

0

對我來說,這是Visual Studio中跑了作爲管理造成的問題。當我運行它,因爲我擺脫了這個錯誤終於普通用戶。

0

確實,如果您從Visual Studio運行獨立應用程序或從Visual Studio使用Office產品進行調試,則應該對這兩個(Visual Studio和Office產品)具有相同的訪問級別,這也是出現此問題的原因,但我在網上看到,有很多人在初始化服務中的Outlook對象時遇到此問題。我希望爲我解決這個問題也會幫助其他人。請按照步驟操作。

  1. 轉到命令提示符,鍵入以下內容並按Enter鍵。這將打開組件服務:

    MMC comexp.msc/32

enter image description here

enter image description here

  • 展開節點組件服務 - >我的電腦 - > DCOM配置

  • 現在找出你想要的應用程序(在這種情況下,Outlook消息附件),並右鍵單擊應用程序(如果您按照這些步驟,這個問題相關的所有辦公應用程序可以解決),並選擇屬性。

  • 轉到標識選項卡並選擇交互式用戶,然後按確定。這應該可以解決您的問題。

  • enter image description here

    交互式用戶不過是登錄的用戶。當您嘗試通過服務訪問辦公產品時,訪問級別必須相同,這就是您需要指定適當用戶的原因。如果您想要在服務器上運行服務而不登錄服務器,則需要確保服務器有一個用於運行服務的用戶帳戶,以及以屬性中指定的方式運行Office產品。看屬性對話框)。如果您想了解此對話框中提到的不同類型的用戶帳戶,請參閱以下Microsoft鏈接。

    http://msdn.microsoft.com/en-us/library/windows/desktop/ms692541%28v=vs.85%29.aspx

    相關問題