2010-08-09 82 views
4

正如標題狀態運行時失敗,我有一個使用互操作來打開Excel並創建一個新的工作簿中的C#控制檯應用程序。當通過命令行運行控制檯應用程序時,代碼工作正常。但是通過計劃任務運行控制檯應用程序時拋出此異常:,做Excel的互操作C#控制檯應用程序 - 爲計劃任務-System.UnauthorizedAccessException

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

它是由以下調用拋出:

_xlApp = new Excel.Application() 

計劃任務是設置爲使用我的憑據(我是一個管理員)。基於其他論壇,我確信我已完全控制我的帳戶在組件服務 - >計算機 - >我的電腦 - > DCom配置 - > Microsoft Excel應用程序,但沒有運氣。

我在Windows 7 Enterprise 64位上。不知道下一步應該是什麼,任何幫助表示讚賞

回答

2

我最後寫一個Windows服務來調出庫包含Excel生成代碼。這解決了錯誤。但是,在調用workbook.Save()方法時存在另一個COM異常。無論我嘗試過哪種錯誤都不會消失。我讀過另一篇文章,其中指出這是安全預防措施,因此也是設計。

但是,調用工作簿。 另存爲()會產生相同的結果,並從Windows服務調用時工作正常。

感謝您的輸入funkymushroom。希望這篇文章能夠幫助別人解決Excel Interop自動化問題。

2

錯誤80070005COM訪問被拒絕錯誤。 您確定您的憑證能夠實例化Interop庫嗎? 檢查此link並遵循一些調試步驟。
我知道你說你做的DCOMConfig的事情了,但還有更多的測試場景,在這個環節,希望這裏的東西可以幫助你

+0

我嘗試了本地安全策略和dcom配置下的所有步驟,仍然拋出同樣的錯誤 – cyrix86 2010-08-09 18:29:53

+0

我有權限實例化Interop庫。我已通過命令行/資源管理器成功運行此應用程序。它僅在計劃任務下失敗 – cyrix86 2010-08-09 18:50:04

+0

計劃任務是否以不同的用戶身份運行? – funkymushroom 2010-08-09 20:26:56

0

我有類似的問題,我已經通過執行以下步驟解決該問題。

DCOM配置

  1. 點擊開始 - >運行
  2. 輸入DCOMCNFG,然後按確定。這將打開DCOMCNFG窗口。
  3. 向下瀏覽樹控制檯根目錄 - >組件服務 - >計算機 - >我的電腦
  4. 右鍵點擊「我的電腦」,選擇屬性
  5. 選擇「默認屬性」選項卡
    • 啓用分佈式COM此計算機上 - 選項被選中
    • 默認身份驗證級別 - 設置爲連接
    • 默認模擬級別 - 設置爲標識
  6. 選擇「COM安全」選項卡
  7. 單擊訪問權限的編輯默認 a。添加「匿名」,「所有人」,「交互」,「網絡」,「系統」,設置本地和遠程訪問權限。
  8. 單擊啓動和激活權限的編輯默認 a。添加「匿名」,「所有人」,「交互」,「網絡」,「系統」,設置本地和遠程訪問權限。
  9. 點擊OK
  10. 關閉DCOMCNFG窗口

後來我同時打開的Excel有一個例外。所以請確保服務器上有以下路徑可用。

  • C:\ WINDOWS \ Syswow64資料\ CONFIG \ systemprofile \桌面
  • C:\ WINDOWS \ Syswow64資料\ CONFIG \ systemprofile \應用程序數據\漫遊\微軟
  • C:\ WINDOWS \ Syswow64資料\設置\ systemprofile \ AppData \ Local \ Microsoft

這可能會幫助像我這樣的人。

0

我也遇到了這個問題 - 事實證明,在計劃任務中,我需要在任務設置的常規選項卡上勾選「以最高權限運行」框。這解決了這個問題 - 它非常簡單!希望它也能幫助別人。

相關問題