2012-01-31 50 views
3

我寫了C#中的Windows服務。我的服務旨在打開Excel宏功能工作簿(這是在Excel 2010中)。我在運行Windows Server 2008 64位的服務器上安裝了此服務。當服務器上沒有人登錄時,我的服務似乎啓動Excel時出現問題,有沒有人有解決方案?錯誤與Excel和C#退出服務器時

我得到以下錯誤:

System.Runtime.InteropServices.COMException (0x8000401A): Retrieving the COM class factory for component with CLSID {00024500-0000-0000-C000-000000000046} failed due to the following error: 8000401a.

Excel將安裝在服務器上,該服務工作正常,當我登錄的服務器上,但一旦所有用戶已註銷,我得到上述錯誤。我希望該服務能夠啓動我的Excel工作簿,而不管服務器上是否有打開的會話。

回答

5

My service seems to have a problem launching Excel when no one is logged on the server, does anyone have a solution to this.

當然,它有一個問題。 Windows Services cannot show a user interface,那麼當沒有用戶登錄時,您如何期望它能夠啓動像Microsoft Excel這樣的GUI應用程序?

特定的COM錯誤您收到手段代碼:

8000401a : The server process could not be started because the configured identity is incorrect. Check the username and password.

換句話說,Excel將嘗試啓動作爲交互式用戶,這指的是當前登錄直接到服務器控制檯的用戶。由於沒有用戶登錄,因此不存在交互式用戶,並且在嘗試採用此身份時應用程序失敗。

設計無論如何都被打破了:Excel的設計不是從Windows服務運行的。改爲創建一個標準Windows應用程序。如果您需要它在沒有自己的UI的情況下在後臺運行,請不要創建窗口。

1

基本上,科迪格雷的答案是正確的。在過去,我需要從Windows服務啓動Excel才能打印文件。

我們能夠通過將服務設置爲以特定用戶帳戶運行並且不時通過該用戶帳戶登錄並嘗試啓動無法看到錯誤消息的文件由Excel彈出。

就你而言,這可能是因爲Excel第一次啓動,它會要求你輸入類似你的首字母縮寫。

1

您是否使用Office Automation啓動Excel?很抱歉,服務流程不支持Office自動化。它被設計爲僅在交互式過程中工作。

如果幸運的話,從服務進程中使用Office Automation將不起作用。如果你不幸運,它會出現工作,你會真正把你的應用程序投入生產。然後你會開始發現很難重現的隨機錯誤,如果不破壞別的東西就更難修復。

這將是由於真正的錯誤是設計錯誤 - 您從服務進程中使用了Office自動化。

把它從經驗之聲......

相關問題