【问题标题】:Retrieving the COM class factory for component failed检索组件的 COM 类工厂失败
【发布时间】:2010-10-27 05:43:01
【问题描述】:

我正在使用 excel 对象(COM 组件)进行 excel 操作。它在我的 PC 上运行良好,但是当我将应用程序部署到我们的 Intranet 时,我收到此错误:

检索 CLSID 为 {00024500-0000-0000-C000-000000000046} 的组件的 COM 类工厂失败,原因是以下错误:80070005

我在web.config 中使用 Windows 身份验证和 impersonate=true。

我在组件服务中进行了所有设置,但仍然报同样的错误。

请帮忙

【问题讨论】:

  • 您找到解决此问题的有效解决方案了吗?我刚刚遇到了同样的问题。我正在运行一个 VB.Net 应用程序,不是 Asp.Net。
  • 没关系,我必须从 Office 安装程序安装 Excel 的 .Net 功能。傻我

标签: excel com


【解决方案1】:

我在部署应用程序时遇到了同样的错误。我从这个网站得到了解决方案:Component with CLSID XXX failed due to the following error: 80070005 Access is denied

这是这个解决方案:

  1. 在 DCOMCNFG 中,右键单击 我的电脑 并选择 属性。

  2. 选择 COM 证券 标签。

  3. 在 Access Permissions 中,点击 Edit Defaults 并添加 Network Service 并赋予它允许本地访问 许可。对 \Users 执行相同操作。

  4. 在 Launch and Activation Permissions 中,点击 Edit Defaults 并添加 Network Service 并赋予它本地启动 和 本地激活 权限。对 \Users 执行相同操作。

*我使用了表单身份验证。

【讨论】:

  • 我不记得我使用的是哪个版本的系统。你试过这个解决方案了吗?
  • 在搜索了大约 10 个小时的解决方案后,这对我有用。其他解决方案提到了更改权限或更改二进制 (dll) 构建的特定程序。这提到了根(我的电脑)和正确的“用户”。 +1。
  • 向所有组件添加权限存在安全风险。最好只向需要它们的特定组件授予权限
【解决方案2】:

这对我有用: (来自msdn forum的解决方案)

转到控制面板 --> 管理工具-->组件服务 --> 计算机 --> myComputer -->DCOM 配置 --> Microsoft Excel 应用程序。

右键单击以获取属性对话框。转到安全选项卡并相应地自定义权限。

在启动和应用程序权限中,选择自定义、编辑。添加调用应用程序的用户/组。

【讨论】:

    【解决方案3】:

    如果您将 Windows 2008 Server 与 IIS7 一起使用,您可能还需要解决一个问题。服务器可能会报以下错误:

    Microsoft Office Excel 无法访问文件“c:\temp\test.xls”。有几个可能的原因:

    • 文件名或路径不存在。
    • 文件正被另一个程序使用。
    • 您尝试保存的工作簿与当前打开的工作簿同名。

    解决办法贴在这里(查找用户小川发的文字):http://social.msdn.microsoft.com/Forums/en-US/innovateonoffice/thread/b81a3c4e-62db-488b-af06-44421818ef91?prof=required

    【讨论】:

    • +1000 服务器 2008 x64 添加文件夹 C:\Windows\SysWOW64\config\systemprofile\Desktop bingo!!!
    【解决方案4】:

    当系统中有陈旧的EXCEL.EXE 进程时,您也会收到此错误(使用Task Manager --> Processes 选项卡查看这些。)

    杀死所有这些实例,应用程序将正常工作。

    【讨论】:

      【解决方案5】:

      如果它对某人有帮助:

      我运行的是 64 位的 Windows 7,我想注册一个 32 位的 dll。

      首先我尝试:regsvr32 并得到以下错误:

      System.Runtime.InteropServices.COMException (0x80040154):检索具有 CLSID {A1D59B81-C868-4F66-B58F-AC94A4A7982E} 的组件的 COM 类工厂失败,原因是以下错误:80040154。

      然后我尝试通过组件服务(Run->DCCOMCNFG)(http://www.justskins.com/forums/difference-registering-dll-using-regsvr32-and-component-services-17280.html)添加应用程序并得到以下错误:

      System.UnauthorizedAccessException:检索具有 CLSID {A1D59B81-C868-4F66-B58F-AC94A4A7982E} 的组件的 COM 类工厂失败,原因是以下错误:80070005。

      有很多链接可以解决它,但对我有用的是: 控制台根目录 -> 组件服务 -> 计算机 -> 我的电脑 -> COM+ 应用程序 -> your_application_name -> 属性:安全选项卡:授权:取消选中“对此应用程序执行访问检查”。

      我不知道它是做什么的。

      【讨论】:

      • 太棒了...点击了我工作笔记本电脑上的色情链接
      【解决方案6】:

      您描述的 CLSID 用于 Microsoft.Office.Interop.Excel.ApplicationClass。这个类基本上是通过 InprocServer32 启动 excel.exe。如果您没有安装它,那么它将返回您在上面收到的错误消息。

      【讨论】:

      • 是的,Excel 没有安装在服务器机器上。有没有其他方法可以使用互操作而不在服务器机器上安装 excel。我问这个是因为我无法在服务器机器上安装任何其他软件。
      • 我认为没有。 Excel.exe 有点像引擎。您可能能够在另一台计算机(具有 Excel)上开发 Web 服务,然后从服务器调用该 Web 服务来处理请求并发回结果。这需要强大的 Windows 和 .NET 编程技能。还有第三方库可以处理 Excel 文档。
      • @UmerFarooq 如何简单的 Web 服务 support.microsoft.com/en-us/kb/308359 。在 Web Service msdn.microsoft.com/en-us/library/aa528822.aspx 中返回大数据。
      【解决方案7】:

      对于 IIS 8,我做了与 Monic 基本相同的事情。我在 x64 机器上将我的应用程序作为自己的应用程序池运行 1.在 DCOMCNFG 中,右键单击我的电脑并选择属性。

      2.选择 COM 证券选项卡。

      3.在访问权限中,单击编辑默认值并将 iis apppool\myapp 添加到其中并授予其允许本地访问权限。对 iis apppool\myapp 执行相同操作

      4.在启动和激活权限中,单击编辑默认值并将iis apppool\myapp添加到其中并赋予其本地启动和本地激活权限。对 iis apppool\myapp 执行相同操作。

      此外,我还必须创建 C:\Windows\SysWOW64\config\systemprofile\Desktop 下列出的文件夹,并为 iis apppool\myapp 提供读\写权限

      【讨论】:

        【解决方案8】:

        我能理解你的痛苦。在我的情况下,通过执行以下步骤解决了错误:

        1. 开始 > 运行 > dcomcnfg。
        2. 打开文件夹 DCOM Config 并选择 Component Services > Computers > My Computer > DCOM Config。
        3. 选择“Microsoft Office Word 97 – 2003 文档”/“Microsoft Excel 应用程序”并转到其属性。
        4. 在“安全”选项卡中设置“启动和激活权限”需要自定义(授权用户)。
        5. 现在转到 IIS 并选择 Web 的应用程序池,然后转到其高级设置并选择“网络服务”作为身份用户。

        希望这会有所帮助。

        【讨论】:

          【解决方案9】:

          我在 IIS 8.5 (Windows Server 2012 R2)Server 中完成了以下操作,并且在我的情况下无需重新启动即可工作:

          1. 在 IIS 中选择连接到应用程序的应用程序池

          2. 然后右键单击 --> 高级设置 --> 进程模型 --> 选择 本地系统 而不是推荐的 ApplicationPoolIdentity

          3. 并确保 C:\Windows\SysWOW64\config\systemprofile\desktop 对用户有足够的访问权限。

          4. 刷新与该池相关的网站链接


          【讨论】:

          • 您将high privileges 提供给应用程序池。您的服务器很容易被黑客入侵。
          【解决方案10】:

          我在尝试从 Act 导出 csv 文件时遇到同样的错误!脱颖而出。我发现的一种解决方法是运行 Act!作为管理员。

          这告诉我这可能是某种权限问题,但这里以前的答案都没有解决问题。我尝试在整个计算机上运行 DCOMCNFG 并更改权限,我还尝试仅更改 Excel 组件的权限,但它未在我的 Windows 10 Pro PC 上的 DCOMCNFG 中列出。

          在找到更好的解决方案之前,这种解决方法可能会对某人有所帮助。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2017-08-22
            • 2015-10-16
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多