检索组件的COM类工厂失败

时间:2009-05-19 05:47:50

标签: excel com

我使用excel对象(COM组件)进行excel操作。它在我的电脑上工作正常,但当我将应用程序部署到我的Intranet时,我收到此错误:

  

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

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

我在组件服务中进行了所有设置,但仍然会出现相同的错误。

请帮忙

10 个答案:

答案 0 :(得分:22)

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

以下是此解决方案:

  1. DCOMCNFG 中,右键单击我的电脑,然后选择属性

  2. 选择 COM证券标签。

  3. 访问权限中,点击编辑默认值,然后将网络服务添加到其中并为其指定允许本地访问< / strong>许可。为&lt;做同样的事情Machine_name&gt; \ Users

  4. 启动和激活权限中,点击修改默认值,然后将网络服务添加到其中并为其提供本地启动本地激活权限。为&lt;做同样的事情Machine_name&gt; \ Users

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

答案 1 :(得分:5)

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

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

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

解决方案发布在此处(查找用户Ogawa发布的文字):http://social.msdn.microsoft.com/Forums/en-US/innovateonoffice/thread/b81a3c4e-62db-488b-af06-44421818ef91?prof=required

答案 2 :(得分:4)

如果系统中存在过时的EXCEL.EXE进程,您也会收到此错误(使用Task Manager --> Processes标签查看这些进程。)

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

答案 3 :(得分:3)

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

  

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

     

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

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

答案 4 :(得分:2)

如果它有助于某人:

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

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

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

然后我尝试通过组件服务(Run-&gt; 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。

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

我不知道它的作用。

答案 5 :(得分:0)

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

答案 6 :(得分:0)

对于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提供读/写权限

答案 7 :(得分:0)

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

  1. 开始&gt;运行&gt; DCOMCNFG。
  2. 打开文件夹DCOM Config并选择组件服务&gt;电脑&gt;我的电脑&gt; DCOM配置。
  3. 选择“Microsoft Office Word 97 - 2003文档”/“Microsoft Excel应用程序”并转到其属性。
  4. 在“安全”选项卡中,设置“启动和激活权限”需要自定义(授权用户)。
  5. 现在转到IIS并选择Web的应用程序池并转到其高级设置并选择“NETWORK SERVICE”作为身份用户。
  6. 希望这有帮助。

答案 8 :(得分:0)

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

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

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

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

  4. 刷新与此池连接的网站链接


enter image description here

答案 9 :(得分:0)

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

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

也许这种解决方法可以帮助某人,直到找到更好的解决方案为止。