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