最近開發需要用到Excel和Word編程,開發環境是VS2010和Office2010,部署的時候出現了一些錯誤如下:
檢索 COM 類工廠中 CLSID 為 {000209FF-0000-0000-C000-000000000046} 的組件時失敗,原因是出現以下錯誤: 8000401a。 的錯誤,
搜索了一下解決方法,總結如下:
1,增加虛擬權限:
在web.config里面增加
<identity impersonate="true" userName="administrator" password="password"/>的鍵值;要求administrator具有管理員權限,這種方案使用后確實可行,可是不利於部署,因為有經驗的人都知道把一個最高權限的服務器帳號密碼公開顯示在配置文件上有什么后果。
2,增加Com組件的交互式訪問權限:
這也是網上搜索率最高的一種方式,運行“DCOMCNFG”,找到Microsoft Word 97-2003 、 Microsoft Excel 應用程序 、Microsoft PowerPoit 應用程序 文檔 這些組件的交互式訪問權限,詳情可以參見:http://support.microsoft.com/kb/288366
3,增加Com組件特定用戶的訪問權限。
建立一個所需的帳號(例如test),權限為Power User或者User;
用此帳號運行一次word或者excel(確保有訪問權限);運行DCOMCNFG,在Dcom組件里面找到Microsoft Excel 應用程序或者Microsoft Word 文檔(和前面一樣)-屬性-標識里面選擇“特定用戶”,然后輸入前面建立的帳號和密碼就可以了
在有的機器上測試還需要在前面的安全標簽里面添加這個賬號的啟用和訪問權限.當然直接用自己登陸的帳好也是可行的
操作整個流程如下:
1、增加虛擬權限,檢查web.config中是不啟動用戶權限訪問。
<identity impersonate="true" userName="administrator" password="password"/>
2、運行dcomcnfg打開組件服務,
依次展開"組件服務"->"計算機"->"我的電腦"->"DCOM配置" ,找到"Microsoft Excel應用程序"或"Microsoft Word應用程序",右鍵打開屬性對話框,點擊"標識"選項卡。按圖操作如下:
如果使用第三套方案,可以直接指定一個用戶名:
注意:如果這里啟動不了用戶,可能是你沒有啟動Server服務,啟動一下就可以了。這個很容易忽略的,因為開發者的電腦都會啟動,但服務器為了安全不一定啟動哦。
按照以上方法基本上能解決您遇到的這個8000401a錯誤。