前一陣子做開發需要用到Excel和Word編程,本人用的是Vista系統,開發環境是VS2005和Office2007,測試無任何問題,可是到部署的時候出現了一些令人很頭痛的問題,老是會出現例如:
檢索 COM 類工廠中 CLSID 爲 {000209FF-0000-0000-C000-000000000046} 的組件時失敗,原因是出現以下錯誤: 8000401a。
的錯誤,在網上查詢了許多資料,大多是二種解決方案:
1,增加虛擬權限:
在web.config裏面增加
的鍵值;要求windowsloginid具有管理員權限,這種方案使用後確實可行,可是不利於部署,因爲有經驗的人都知道把一個最高權限的服務器帳號密碼公開顯示在配置文件上有什麼後果。所以這種方案不可行。那麼就牽涉到第二種方案。
2,增加Com組件的交互式訪問權限:
這也是網上搜索率最高的一種方式,運行“DCOMCNFG”,找到
Microsoft Excel 97/2000/2002 - Microsoft Excel 應用程序
Microsoft Word 2000/2002 - Microsoft Word 文檔 這些組件的交互式訪問權限,詳情可以參見:
http://support.microsoft.com/kb/288366
這種方案應該是可行的,可是我在我自己的機器上一級服務器上試驗過很多遍都不行,最後我試着用特定的用戶來訪問,如果細分的話,這裏可以算爲第三種解決方案了^_^
3,增加Com組件特定用戶的訪問權限。
這纔是我今天說的重點,也是幫我解決了實際難題的一重解決方案,簡略的說可以這麼做:
建立一個所需的帳號(例如test),權限爲Power User或者User;
用此帳號運行一次word或者excel(確保有訪問權限);
運行DCOMCNFG,在Dcom組件裏面找到Microsoft Excel 應用程序或者Microsoft Word 文檔(和前面一樣)-屬性-標識裏面選擇“特定用戶”,然後輸入前面建立的帳號和密碼就可以了
在有的機器上測試還需要在前面的安全標籤裏面添加這個賬號的啓用和訪問權限.當然直接用自己登陸的帳好也是可行的
Dcom權限配置如下截圖