检索 COM 类工厂中 CLSID 为 {00024500-0000-0000-C000-000000000046} 的组件失败,原因是出现以下错误: 80070005 拒绝访问。 (异常来自 HRESULT:0x80070005 (E_ACCESSDENIED))。
配置DCOM
具体配置方法如下:
1:在服务器上安装office的Excel软件.
2:在"开始"->"运行"中输入dcomcnfg.exe启动"组件服务"(如果系统是是64位的话,需要输入"comexp.msc -32"),记得一定要在系统组件中找到Excel,否则后面错误千奇百怪,无法处理。
3:依次双击"组件服务"->"计算机"->"我的电脑"->"DCOM配置"
4:在"DCOM配置"中找到"Microsoft Excel 应用程序",在它上面点击右键,然后点击"属性",弹出"Microsoft Excel 应用程序属性"对话框
5:点击"标识"标签,选择"交互式用户"
6:点击"安全"标签,在"启动和激活权限"上点击"自定义",然后点击对应的"编辑"按钮,在弹出的"安全性"对话框中填加一个"NETWORK SERVICE"用户(注意要选择本计算机名),并给它赋予"本地启动"和"本地激活"权限.
7:依然是"安全"标签,在"访问权限"上点击"自定义",然后点击"编辑",在弹出的"安全性"对话框中也填加一个"NETWORK SERVICE"用户,然后赋予"本地访问"权限.
注:在XP系统中还要添"加机器名/ASPNET"用户的上述权限。
在window 2003 server中,如果还出现8000401a错误,在标示里面选择“下列用户”,填写登录计算机的并拥有对Excel本地操作权限的用户。或者在标示里面选择“启用用户”.
但是我按照上面的方法做了以后,仍然提示相同的错误。
也就是把network service用户赋予访问 microsoft excel application的权限。对我来说这样不行。
我尝试把everyone赋予 microsoft excel application的权限,仍然不行。并且发现,everyone 似乎又在microsoft excel application的权限列表里消失了。
最后我又尝试把iis_iuser用户增加权限,之后再访问应用,导出成功了。
似乎不同的系统或者iis版本需要赋权限的用户也不同