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