簡體   English   中英

執行Excel Interop的C#控制台應用程序 - 按計划運行時失敗任務-System.UnauthorizedAccessException

[英]C# console app that does Excel Interop - failing when running as scheduled Task -System.UnauthorizedAccessException

正如標題所述,我有一個C#控制台應用程序,它使用互操作來打開Excel並創建一個新的工作簿。 通過命令行運行控制台應用程序時,代碼工作正常。 但是,通過計划任務運行控制台應用程序時會拋出此異常:

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位上。 不確定下一步應該是什么,任何幫助表示贊賞

錯誤80070005COM訪問被拒絕錯誤。 您確定您的憑據能夠實例化Interop庫嗎? 檢查此鏈接並按照一些調試步驟進行操作。
我知道你說你已經完成了DCOMConfig的事情,但是在這個鏈接中有更多的測試場景,希望這里有些東西可以幫到你

我最終編寫了一個Windows服務來調用包含Excel生成代碼的庫。 這解決了錯誤。 但是,在調用workbook.Save()方法時還有另一個COM異常。 無論我嘗試什么,這個錯誤都不會消失。 我讀了另一篇帖子,其中說這是一項安全預防措施,因此也就是設計方面。

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

感謝輸入funkymushroom。 希望這篇文章對於其他正在努力使用Excel Interop自動化的人有所幫助。

我有類似的問題,我通過執行以下步驟解決了這個問題。

DCOM配置

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

后來我打開Excel時遇到異常。 因此,請確保服務器上有以下路徑。

  • C:\\ WINDOWS \\ Syswow64資料\\ CONFIG \\ systemprofile \\桌面
  • C:\\ WINDOWS \\ Syswow64資料\\ CONFIG \\ systemprofile \\應用程序數據\\漫游\\微軟
  • C:\\ WINDOWS \\ Syswow64資料\\ CONFIG \\ systemprofile \\應用程序數據\\本地\\微軟

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

我也有這個問題 - 事實證明,在計划任務中,我需要勾選任務設置的常規選項卡上的“以最高權限運行”框。 這解決了這個問題 - 它很簡單! 希望它也可以幫助其他人。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM