"檢索COM類工廠中 CLSID為 {00024500-0000-0000-C000-000000000046}的組件時失敗,原因是出現以下錯誤: 80070005" 問題的解決 ...
一、故障環境
- Windows 2008
- .net 3.0
二、故障描述
調用excel組件生成excel文檔時頁面報錯。報錯內容一大串,核心是“檢索COM類工廠中 CLSID為 {00024500-0000-0000-C000-000000000046}的組件時失敗,原因是出現以下錯誤: 80070005”。應該是WEB應用帳號許可權不足導致的。百度上同樣問題的解決方案超級多,但內容幾乎一樣,效果也幾乎一樣是沒什麼用。結合網文和實際應用折騰了半天終於解決,整理一下思路記錄在此,以備再查。
三、處理
- 打開“組件服務”。有的文章說32位DCOM配置需要在運行中執行“comexp.msc -32”來啟動,但在此實例中怎麼打開都是一樣的。
- 在“組件服務/電腦/我的電腦/DCOM配置”中找到“Microsoft Excel Application”或“Microsoft Excel 應用程式”,右鍵菜單選“屬性”。在屬性面板里切換到“標識”選擇“啟動用戶”,再切換到“安全”將項目應用程式池對應啟動帳號(或iis_wpg組) 分別添加到“啟動和激活許可權”以及“訪問許可權”中,並給予所有許可權。確定並退出。
- 找到office安裝目錄,給excel.exe所在目錄添加應用程式池對應啟動帳號(或iis_wpg組)讀取許可權。
四、幾個小細節
- 很多網文都說在“組件服務”屬性面板的“標識”里選擇“交互用戶”,事實上在此實例中是完全行不懂的,必須要設為“啟動用戶”。
- 故障發生時在系統日誌里可能會連帶報告
“應用程式-特定 許可權設置並未從地址 LocalHost(使用 LRPC) 使用 CLSID
{000C101C-0000-0000-C000-000000000046}
和 APPID
{000C101C-0000-0000-C000-000000000046}
向用戶XXXXXXXX授予對 COM 伺服器應用程式的 本地 激活 許可權。此安全許可權可以使用組件服務管理工具進行修改。”
可以不處理。