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