正如标题所述,我有一个C#控制台应用程序,它使用互操作来打开Excel并创建一个新的工作簿。通过命令行运行控制台应用程序时,代码工作正常。但是,通过计划任务运行控制台应用程序时会抛出此异常:
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()
计划任务设置为使用我的凭据(我是管理员)。基于其他论坛,我确保我已在组件服务中授予对我的帐户的完全控制权 - >计算机 - >我的电脑 - > DCom配置 - > Microsoft Excel应用程序,但没有运气。
我使用的是Windows 7 Enterprise 64位。不确定下一步应该是什么,感谢任何帮助
答案 0 :(得分:2)
错误80070005是 COM拒绝访问错误。 您确定您的凭据能够实例化Interop库吗? 检查此link并按照一些调试步骤进行操作 (我知道你说你已经完成了DCOMConfig的事情,但是在这个链接中有更多的测试场景,希望这里的东西可以帮助你)
答案 1 :(得分:2)
我最终编写了一个Windows服务来调用包含Excel生成代码的库。这解决了错误。但是,在调用workbook.Save()方法时还有另一个COM异常。无论我尝试什么,这个错误都不会消失。我读了另一篇文章,其中说这是一项安全预防措施,因此也是设计上的。
但是,调用工作簿。 SaveAs() 将产生相同的结果,并且在从Windows服务调用时工作正常。
感谢输入funkymushroom。希望这篇文章对于其他正在努力使用Excel Interop自动化的人有所帮助。
答案 2 :(得分:0)
我有类似的问题,我通过执行以下步骤解决了这个问题。
DCOM配置
稍后我在打开Excel时遇到异常。因此,请确保服务器上有以下路径。
这可能对像我这样的人有所帮助。
答案 3 :(得分:0)
我也有这个问题 - 事实证明,在计划任务中,我需要勾选任务设置的常规选项卡上的“以最高权限运行”框。这解决了这个问题 - 它很简单!希望它也可以帮助其他人。