首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >“正在检索组件的COM类工厂...错误: 80070005访问被拒绝。”(来自HRESULT的异常: 0x80070005 (E_ACCESSDENIED))

“正在检索组件的COM类工厂...错误: 80070005访问被拒绝。”(来自HRESULT的异常: 0x80070005 (E_ACCESSDENIED))
EN

Stack Overflow用户
提问于 2013-07-22 18:19:41
回答 14查看 188.2K关注 0票数 33

我刚刚创建了一个简单的应用程序并托管在IIS6.0中。在代码中,我只是实例化excel对象。

代码语言:javascript
复制
using excel = Microsoft.Office.Interop.Excel.Application;

namespace TestHosting
{
    public partial class WebForm1 : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            excel excelObj=new Microsoft.Office.Interop.Excel.Application();
        }
    }
}

它给了我下面的错误

代码语言:javascript
复制
 "Retrieving the COM class factory for component with CLSID {00024500-0000-0000-C000-000000000046} failed due to the following error: 80070005 Access is denied." (Exception from HRESULT: 0x80070005 (E_ACCESSDENIED)).

系统配置:

64位Windows server 2008企业版。 service pack 2

我尝试了在互联网上找到的许多可能的解决方案,但没有一个对我有效。

下面是我尝试过一些解决方案

1)在C:\Windows\SysWOW64\config\systemprofile路径下创建桌面应用程序2)在DCOMCNFG中设置Microsfot.EXcelApplicaiton的完全权限/控制3)杀死任务管理器中的所有excel实例

请在这方面帮助我,这只是一个样本应用程序,但在我的原始应用程序主要是关于读取和写入数据的excel。

EN

回答 14

Stack Overflow用户

回答已采纳

发布于 2013-08-02 20:07:08

  1. 请确保在服务器上安装了Office运行时。
  2. 如果您使用的是Windows Server2008,则使用office互操作是一项冗长的配置,以下是步骤。

更好的方法是迁移到Open XML,或者您可以按如下方式进行配置

  • 安装MS Office Pro最新版本(我用的是2010专业版)
  • Create User ExcelUser。Assign WordUser with Admin Group
  • 转到Computer -> Manage
  • Add User with以下options
  • User Options Password Never Expires
  • Password Change Be Change

Com+配置

Properties

  • General

  • 转到控制面板->管理员->组件服务->

  • 打开Microsoft Word 97 - 2003 Properties

  • General ->身份验证级别: None

  • Security

  • 自定义所有3个权限以允许Excel ->此用户使用-> ExcelUser

App以确保一切正常

3.在DCOM配置中更改Microsoft Excel应用程序的安全设置。

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

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

请看这里的帖子:Error while creating Excel objectExcel manipulations in WCF using COM

票数 52
EN

Stack Overflow用户

发布于 2014-03-13 23:08:36

有时,您创建了新的应用程序池,但无法通过DCOMCNFG解决它。然后还有另一种方法可以做:

将应用程序池的Identity (型号名称)设置为LocalSystem

我不知道根本原因,但它解决了我的问题一次。

票数 41
EN

Stack Overflow用户

发布于 2016-05-16 11:16:41

太晚了,无法回应。但是,如果这对仍然面临这个问题的人有所帮助。我通过以下方式解决了这个问题:

→将站点设置在专用池上,而不是共享池上。

→支持32位应用程序。

将应用程序池的标识设置为LocalSystem的→。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17785063

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档