2010-04-22 100 views
3

我有我嘗試激活字2003(字安裝在系統上)一個C#2.0(的WinForms)項目。通過使用下面的代碼:COM異常0x800A11F9 - 無法啓動應用程序

private void ActivateWord() 
{ 
    this.Activate(); 

    if (m_WordDocument != null) 
    { 
     try 
     { 
      m_WordDocument.Activate(); 

      if (m_WordDocument.Application != null) 
      { 
       m_WordDocument.Application.Visible = true; 
       m_WordDocument.Application.Activate(); 
      } 
     } 
     catch (COMException comEx) 
     { 
      ShowError(this, comEx.Message, false); 
     } 
    } 
} 

當我的應用程序執行m_WordDocument.Application.Activate()我收到一個COM異常0x800A11F9。

Stacktrace: 
    "System.Runtime.InteropServices.COMException (0x800A11F9): Cannot activate application 
     at Word.ApplicationClass.Activate() 
     at Roxit.SquitXO.GUI.DocumentCreatie.frmSelectVeld.ActivateWord()" 

什麼可能是這個問題的原因?

+0

錯誤代碼網上搜尋好,只是幾命中。如果這沒有幫助,您需要Microsoft支持。 – 2010-04-22 11:11:31

+0

我看到這個完全相同的錯誤,花了一段時間與DCOM配置futzing後。我嘗試了谷歌搜索,但沒有真正的運氣(大多數網站只是這個SO問題在其他網站上的副本)。 – 2010-11-02 14:30:51

回答

0

只是一個想法在當時它是從ASP.net帳戶造成權限問題的服務器(我們不再做由於片狀)上做文字自動化時候,但是我已經看到了類似的錯誤,我知道你在winforms中運行,但這可能與權限有關嗎?

5

COM錯誤0x800A11F9是一個well-known權限問題,當一個不受尊敬的用戶(如Network Service)嘗試激活Office應用程序時發生。

在你的情況,因爲你正在開發一個WinForms應用程序的問題不能從IIS。相反,它看起來像您的應用程序是由在Local ServiceNetwork Service用戶帳戶下運行的Windows服務啓動的。

如果是這樣的情況確實如此,您需要更改該服務的屬性對話框中的選項卡Log on使用該服務的用戶帳戶。

編輯:您可能想嘗試將激活Word的代碼放入COM+ component並配置組件的標識,以便它可以在可啓動Word的用戶帳戶下運行。

+0

就我而言,這是從一個Web應用程序運行。我無法更改用戶帳戶,因爲我正在使用Sitecore,它需要特定用戶才能登錄。我試圖通過DCOM配置訪問網絡服務用戶,而不是骰子。然後,我嘗試更新「所有人」的全球COM權限爲「啓動和訪問」,沒有骰子。 – 2010-11-08 15:06:40

+0

嗯,我在過去使用MS word在Web服務器上生成文檔時遇到過類似的問題。如果我記得您需要授予服務用戶權限並將運行該應用程序的用戶的身份更改爲具有適當權限的用戶(DCom屬性)。這對我有效。此外,您還將在Microsoft Word的DCom的安全標記中設置啓動和激活權限以及其他權限 – Kell 2010-11-09 08:51:10

0

如果它是一個權限問題,你不能讓Sitecore的作爲具有足夠權限的用戶身份運行,或許你可以爲你的應用程序Sitecore的發送請求到寫不同的服務(「WordService」)。然後WordService可以作爲一個稍微有特權的用戶運行,用Word做你的事情,然後例如將填充的Word文件寫入SiteCore可以訪問的已知位置,或者任何您希望它執行的操作。