遇到 System.Runtime.InteropServices.COMException (0x80080005): 服務(wù)器運(yùn)行失敗
錯(cuò)誤時(shí),可以按照以下步驟排查和解決:
1. 確認(rèn)COM組件是否正確注冊
2. 檢查權(quán)限問題
以管理員身份運(yùn)行程序:
調(diào)整DCOM配置權(quán)限:
按 Win + R
,輸入 dcomcnfg
打開 組件服務(wù)。
依次展開 組件服務(wù) → 計(jì)算機(jī) → 我的電腦 → DCOM配置。
找到目標(biāo)COM組件(如Excel等),右鍵選擇 屬性。
在 安全 選項(xiàng)卡中,確保啟動和激活權(quán)限已賦予當(dāng)前用戶或組(如Everyone
)。
在 標(biāo)識 選項(xiàng)卡中,選擇 交互式用戶 或 啟動用戶。
3. 檢查32位/64位兼容性
確認(rèn)程序與COM組件的位寬一致:
若COM組件是32位的,確保C#項(xiàng)目目標(biāo)平臺設(shè)為 x86(而非Any CPU)。
若組件是64位的,項(xiàng)目目標(biāo)平臺設(shè)為 x64。
在Visual Studio中:右鍵項(xiàng)目 → 屬性 → 生成 → 目標(biāo)平臺。
4. 禁用安全軟件或防火墻
5. 修復(fù)或重裝依賴軟件
6. 檢查系統(tǒng)日志
7. 其他可能性
注冊表損壞:使用系統(tǒng)文件檢查工具修復(fù):
清理臨時(shí)文件:刪除 %temp%
和 C:\Windows\Temp
下的文件。
更新系統(tǒng)/驅(qū)動:確保Windows和依賴庫已更新至最新版本。
示例代碼排查
若錯(cuò)誤出現(xiàn)在調(diào)用COM組件時(shí)(如Excel):
var excelApp = new Microsoft.Office.Interop.Excel.Application();
通過以上步驟,逐步排除權(quán)限、注冊、兼容性等問題,通常能解決該COM異常。若問題仍未解決,需結(jié)合系統(tǒng)日志和具體調(diào)用代碼進(jìn)一步分析。
該文章在 2025/4/9 12:00:07 編輯過