关于导出Excel出现异常的解决办法。:System.UnauthorizedAccessException: 检索 COM 类工厂中 CLSID 为 {000209FF-0000-0000-C000-000000000046} 的组件时失败

时间:2023-03-09 20:11:17
关于导出Excel出现异常的解决办法。:System.UnauthorizedAccessException: 检索 COM 类工厂中 CLSID 为 {000209FF-0000-0000-C000-000000000046} 的组件时失败

异常信息为:System.UnauthorizedAccessException: 检索 COM 类工厂中 CLSID 为 {000209FF-0000-0000-C000-000000000046} 的组件时失败

网上找了解决方法

1.在"开始"->"运行"中输入dcomcnfg.exe启动"组件服务"

2:依次双击"组件服务"->"计算机"->"我的电脑"->"DCOM配置"

3:在"DCOM配置"中找到"Microsoft Excel Application",在它上面点击右键,然后点击"属性",弹出"Microsoft Excel 应用程序属性"对话框

4:点击"标识"标签,选择"交互式用户"

5:点击"安全"标签,在"启动和激活权限"上点击"自定义",然后点击对应的"编辑"按钮,在弹出的"安全性"对话框中填加一个"NETWORK SERVICE"“IUSR”用户(注意要选择本计算机名),并给它赋予"本地启动"和"本地激活"权限.

6:依然是"安全"标签,在"访问权限"上点击"自定义",然后点击"编辑",在弹出的"安全性"对话框中也填加一个"NETWORK SERVICE"“IUSR”用户,然后赋予"本地启动"“本地激活”权限.

7.依然是“安全”标签,在“配置权限”上选择自定义,然后点击”编辑“,在弹出的”安全性“对话框中也添加"NETWORK SERVICE"“IUSR”用户,赋予完全控制盒读取权限。

但是我在服务中没有找到Microsoft Excel Application这个组件

原来是因为我的系统是64位的 但是offic组件提供的是32位的 要先添加进来才可以操作

原话为:

由於Dcomcnfg是一个32位和配置,在64系统下并不能被完全支持,因此需要对WIN2008 X64系统进行DCOM配置

所以问题出在IIS用户对offic组件没有相应的权限

解决问题整个流程如下

1.1运行:mmc -32。
1.2在菜单中选择File(文件)->Add/Remove Snap(添加/删除管理单元)。
添加Component Services(组件服务),然後在Component Services下找到Excel後再进行配置,就和32位系统一样可以看到Microsoft Excel Appliction 组件了。
2.由于用户没有操作excel的权限,需要通过如下操作对 Microsoft Excel Appliction 进行授权。
2.1运行:dcomcnfg.exe。
2.2"组件服务"- >"计算机"- >"我的电脑"- >"DCOM配置"->找到word->属性->"标识"标签,选择"交互式用户" 。
2.3->安全"标签"->在"启动和激活权限"上点击"自定义",然后点击对应的"编辑"按钮,在弹出的"安全性"对话框中填加 一个"IIS_USERS"用户(注意要选择本计算机名),并给它赋予"本地启动"和"本地激活"权限。
2.4->"安全"标签,在"访问权限"上点击"自定义",然后点击"编辑",在弹出的"安全性"对话框中也填加一个" IIS_USERS"用户,然后赋予"本地访问"权限. 这样,我们便配置好了相应的Excel的DCOM权限。
如果还不可以就重复2.3和2.4步骤 添加“NETWORK SERVICE”用户
就可以解决问题