2009-07-27 66 views
8

我試圖從編輯VB.NET使用大部分的代碼Word文檔:檢索COM類工廠組件的錯誤而產生的word文檔

如何從Visual Basic .NET使Word自動運行創建一個新的文件 http://support.microsoft.com/kb/316383

它在我的機器上正常工作,但當我發佈到服務器時,我得到以下錯誤。

Retrieving the COM class factory for component with CLSID {000209FF-0000-0000-C000-000000000046} failed due to the following error: 80070005.

Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.UnauthorizedAccessException: Retrieving the COM class factory for component with CLSID {000209FF-0000-0000-C000-000000000046} failed due to the following error: 80070005.

實際的錯誤,當我嘗試只創建一個Word應用程序對象

Dim oWord As New Word.Application 

使用Visual Studio 2008和VB.NET 3.5發生。我參考了「Microsoft Word 10.0 Object Library」,並在bin目錄中看到了Interop.Word.dll文件。

開發計算機和Windows Server 2003

還是相當新的.NET和沒有關於窗口服務器多少知識,而是出現「UnauthorizedAccessException」關於使用MS Office 2003的聽起來像一個權限問題。我想知道如果有人能指出我正確的方向,我可能需要做的是讓我的小應用程序訪問使用word。

回答

7

它絕對聽起來像一個權限問題。你是否在Windows服務中運行你的代碼?該服務通常以本地系統運行,該系統可能沒有權限訪問Word對象模型。此外,如果單詞已經在使用某個其他用戶的憑據運行,那麼您的程序可能無法通過使用不同憑證的COM來訪問它。辦公室應用程序往往是單一實例,似乎加劇了這個問題。

+0

有趣的是,當我登錄到系統並運行Word時,它運行安裝程序。我猜這個用戶之前沒有人跑過這個詞。它並沒有解決我的問題,但我甚至懷疑即使沒有許可問題,如果這將阻止它的工作。 沒有我的代碼是一個Web應用程序。雖然這是一個很少使用的小應用程序,但我從來沒有考慮過如果兩個人同時嘗試運行它,會發生什麼情況。感謝那些意見。 有沒有辦法查看其他人是否正在訪問COM對象?我很確定沒有別的,但我甚至不知道在哪裏檢查。 – TheDPQ 2009-07-27 21:42:53

+0

Web應用程序以用戶身份運行?例如,在IIS 7中,應用程序池將作爲本地系統運行,這可能會有相同的問題。 – 2009-07-27 22:14:00

0

聽起來你可能在DCOM中有權限問題。嘗試在DCOM配置中編輯Word權限。

0

轉到開始 - >運行
註冊表編輯器-32,然後按回車鍵。
- 註冊表編輯器將會打開。
轉到註冊表HKEY_CLASSES_ROOT \ Word.Application
選擇Word.Application並設置全權限如下用戶: -
管理員,管理員,本地服務,系統,服務,互動和用戶。

1

就我而言,Word通過服務帳戶下的Windows服務運行。

問題是桌面文件夾不存在於C:\Windows\System32\config\systemprofile(或C:\Windows\SysWOW64\config\systemprofile)中。

添加它解決了我的問題。

0

我在生成word文檔時遇到了同樣的問題。我通過檢查任務管理器解決了問題,並結束了當前正在運行的進程WINWORD.EXE,然後再次執行了我的代碼。問題沒有了。

相關問題