前一阵子做开发须要用到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