2010-08-09 81 views
4

正如标题状态运行时失败,我有一个使用互操作来打开Excel并创建一个新的工作簿中的C#控制台应用程序。当通过命令行运行控制台应用程序时,代码工作正常。但是通过计划任务运行控制台应用程序时抛出此异常:,做Excel的互操作C#控制台应用程序 - 为计划任务-System.UnauthorizedAccessException

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位上。不知道下一步应该是什么,任何帮助表示赞赏

回答

2

我最后写一个Windows服务来调出库包含Excel生成代码。这解决了错误。但是,在调用workbook.Save()方法时存在另一个COM异常。无论我尝试过哪种错误都不会消失。我读过另一篇文章,其中指出这是安全预防措施,因此也是设计。

但是,调用工作簿。 另存为()会产生相同的结果,并从Windows服务调用时工作正常。

感谢您的输入funkymushroom。希望这篇文章能够帮助别人解决Excel Interop自动化问题。

2

错误80070005COM访问被拒绝错误。 您确定您的凭证能够实例化Interop库吗? 检查此link并遵循一些调试步骤。
我知道你说你做的DCOMConfig的事情了,但还有更多的测试场景,在这个环节,希望这里的东西可以帮助你

+0

我尝试了本地安全策略和dcom配置下的所有步骤,仍然抛出同样的错误 – cyrix86 2010-08-09 18:29:53

+0

我有权限实例化Interop库。我已通过命令行/资源管理器成功运行此应用程序。它仅在计划任务下失败 – cyrix86 2010-08-09 18:50:04

+0

计划任务是否以不同的用户身份运行? – funkymushroom 2010-08-09 20:26:56

0

我有类似的问题,我已经通过执行以下步骤解决该问题。

DCOM配置

  1. 点击开始 - >运行
  2. 输入DCOMCNFG,然后按确定。这将打开DCOMCNFG窗口。
  3. 向下浏览树控制台根目录 - >组件服务 - >计算机 - >我的电脑
  4. 右键点击“我的电脑”,选择属性
  5. 选择“默认属性”选项卡
    • 启用分布式COM此计算机上 - 选项被选中
    • 默认身份验证级别 - 设置为连接
    • 默认模拟级别 - 设置为标识
  6. 选择“COM安全”选项卡
  7. 单击访问权限的编辑默认 a。添加“匿名”,“所有人”,“交互”,“网络”,“系统”,设置本地和远程访问权限。
  8. 单击启动和激活权限的编辑默认 a。添加“匿名”,“所有人”,“交互”,“网络”,“系统”,设置本地和远程访问权限。
  9. 点击OK
  10. 关闭DCOMCNFG窗口

后来我同时打开的Excel有一个例外。所以请确保服务器上有以下路径可用。

  • C:\ WINDOWS \ Syswow64资料\ CONFIG \ systemprofile \桌面
  • C:\ WINDOWS \ Syswow64资料\ CONFIG \ systemprofile \应用程序数据\漫游\微软
  • C:\ WINDOWS \ Syswow64资料\设置\ systemprofile \ AppData \ Local \ Microsoft

这可能会帮助像我这样的人。

0

我也遇到了这个问题 - 事实证明,在计划任务中,我需要在任务设置的常规选项卡上勾选“以最高权限运行”框。这解决了这个问题 - 它非常简单!希望它也能帮助别人。

相关问题