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