执行Excel Interop的C#控制台应用程序 – 按计划运行时失败Task -System.UnauthorizedAccessException
正如标题所述,我有一个C#控制台应用程序,它使用互操作来打开Excel并创build一个新的工作簿。 当通过命令行运行控制台应用程序时,代码工作正常。 但是,通过计划任务运行控制台应用程序时会引发此exception:
System.UnauthorizedAccessException: Retrieving the COM class factory for component with CLSID {00024500-0000-0000-C000-000000000046} failed due to the following error: 80070005
这是从以下电话中抛出:
_xlApp = new Excel.Application()
计划的任务设置为使用我的凭据(我是pipe理员)。 基于其他论坛,我确信我已经完全控制我的帐户在组件服务 – >计算机 – >我的电脑 – > DComconfiguration – > Microsoft Excel应用程序,但没有运气。
我在Windows 7企业版64位。 不知道下一步应该是什么,任何帮助表示赞赏
错误80070005是COM访问被拒绝错误。 你确定你的凭证能够实例化Interop库吗? 检查这个链接,并按照一些debugging步骤。
( 我知道你说你已经做了DCOMConfig的事情,但在这个链接有更多的testing场景,希望在这里可以帮到你 )
最后,我写了一个windows服务来调出一个包含Excel代码的库。 这修正了错误。 但是,在调用workbook.Save()方法时还有另一个COMexception。 不pipe我怎么想,错误都不会消失。 我读了另一篇文章,说这是一个安全预防措施,因此是devise。
但是,调用工作簿。 SaveAs()将产生相同的结果,并从Windows服务调用时工作正常。
感谢您inputfunkymushroom。 希望这篇文章能够帮助别人解决Excel Interop自动化问题。
我有类似的问题,我已经通过执行以下步骤解决了这个问题。
DCOMconfiguration
- 点击开始 – >运行
- inputDCOMCNFG,然后按确定。 这将打开DCOMCNFG窗口。
- 向下浏览树到控制台根目录 – >组件服务 – >计算机 – >我的电脑
- 右键单击“我的电脑”并select属性
- select“默认属性”选项卡
- 在这台计算机上启用分布式COM – 选项被选中
- 默认身份validation级别 – 设置为连接
- 默认模拟级别 – 设置为识别
- select“COM安全”选项卡
- 点击访问权限编辑默认a。 添加“匿名”,“所有人”,“交互”,“networking”,“系统”,设置本地和远程访问权限。
- 点击启动和激活权限编辑默认a。 添加“匿名”,“所有人”,“交互”,“networking”,“系统”,设置本地和远程访问权限。
- 点击确定
- closuresDCOMCNFG窗口
后来我在打开Excel的时候出现exception。 所以请确保服务器上有以下path可用。
- C:\ WINDOWS \ Syswow64资料\ CONFIG \ systemprofile \桌面
- C:\ WINDOWS \ Syswow64资料\ CONFIG \ systemprofile \应用程序数据\漫游\微软
- C:\ WINDOWS \ Syswow64资料\ CONFIG \ systemprofile \应用程序数据\本地\微软
这可能会帮助像我这样的人。
我也有这个问题 – 事实certificate,在计划的任务,我需要勾选任务设置的常规选项卡上的“以最高权限运行”框。 这解决了这个问题 – 非常简单! 希望它也能帮助别人。