【问题标题】: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 ServerIIS7 一起使用,您可能还需要解决一个问题。服务器可能会报以下错误:

    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
            相关资源
            最近更新 更多