由于以下错误,检索具有 CLSID XXXX 的组件的 COM 类工厂失败:80080005

Posted

技术标签:

【中文标题】由于以下错误,检索具有 CLSID XXXX 的组件的 COM 类工厂失败:80080005【英文标题】:Retrieving the COM class factory for component with CLSID XXXX failed due to the following error: 80080005由于以下错误,检索具有 CLSID XXXX 的组件的 COM 类工厂失败:80080005 【发布时间】:2010-09-21 16:51:19 【问题描述】:

.Net 中“检索具有 CLSID XXXX 的组件的 COM 类工厂失败,原因是以下错误:80080005”错误的故障排除过程是什么?澄清一下:我在运行时得到这个,在我的 XP 机器上,客户端是在管理员帐户下运行的 .net 代码。 XXXX 是指我们内部的 COM 组件之一。

据我了解,0x80080005 是指“权限被拒绝”,但我该去哪里检查/更改权限?还是我在这里完全错了,错误来自组件本身,而不是来自 Windows COM 子系统?

【问题讨论】:

您的问题可能过于模糊,无法得到有意义的答案。您是否在编译时收到此错误?运行?什么 COM 组件导致错误?如果错误出现在运行时,您是在 XP 还是 Vista 上以非管理员用户身份运行? 真的需要更多信息来回答。您的应用程序是桌面应用程序吗?它是作为标准用户还是管理员运行? COM 对象是本地的还是远程的? 我遇到过类似的情况。我可以说 - 至少根据我自己的经验 - 它可以发生在本地运行的应用程序中,在服务帐户的上下文下运行,而 svc acct 是您自己的用户名,而您在计算机上具有管理员权限,并且COM 对象是机器本地的。尝试启动访问 COM 对象的代码时会发生该错误。我同意仍然遗漏了哪个 COM 对象 - 在我的示例中,它是 Word 对象。 相关 - ***.com/questions/3477086/… 【参考方案1】:

根据 ERRLOOK.EXE,0x80080005 是“服务器执行失败”。 WinError.h 将此列为CO_E_SERVER_EXEC_FAILURE。不是“拒绝访问”。

【讨论】:

哦。谢谢!这是否意味着服务器出现故障,或者 COM 未能实例化服务器? 这应该是作为评论,而不是答案。这并不能解决任何问题。【参考方案2】:

似乎是一个与启动 COM 服务器有关的一般性错误。可能的问题包括timeouts、logon failures(检查关于CO_E_SERVER_EXEC_FAILURE 的Q)或security permissions,或(显然)VS2008 ATL bug。我认为,在 CreateInstance 中遇到错误也可以解决问题。

我会首先检查事件日志中是否有任何有趣的内容。

【讨论】:

我只是挖了服务器的源代码。它是 C++/ATL。不寒而栗。解决这些问题似乎比深入了解它更容易。 嗨。你的帖子很有趣。不过里面的链接好像有语法问题,secfac.htm好像移到了alt.pluralsight.com/wiki/default.aspx/Keith/… 应该避免仅链接答案并提供这些下的一些东西来检查,而不是。 “登录失败”和“安全权限”链接已经是死链接。如果开发人员使用的是 VS 2008 SP1 或更高版本,则 ATL 错误将不再适用。【参考方案3】:

您可以查看的一件事是 DCOM 安全配置。它由 dcomcnfg 实用程序控制。网上有helpful tutorial videos讲解如何使用。还有一个thread on the ASP.NET论坛讨论如何使用dcomcnfg。

【讨论】:

不鼓励仅链接的答案。该教程现在是一个死链接。该线程是相关的 - 他所做的是为网络服务帐户添加 DCOM 配置 > Microsoft Word 93-2000 远程启动激活权限。你应该刚刚添加到这里。一个 SO 链接(只要此页面处于活动状态,它将处于活动状态)有关于如何执行此操作的说明,尽管他们建议使用交互式用户,或者不使用,如果这不起作用,那么 3 个选项:***.com/questions/3477086/…

以上是关于由于以下错误,检索具有 CLSID XXXX 的组件的 COM 类工厂失败:80080005的主要内容,如果未能解决你的问题,请参考以下文章

由于以下错误,检索具有 CLSID 00020906-0000-0000-C000-000000000046 的组件的 COM 类工厂失败:80070005

Windows 10 sdk安装程序崩溃“检索具有CLSID的组件的COM类工厂”

.NET 0x80040154 (REGDB_E_CLASSNOTREG):检索具有 CLSID XXXX 的组件的 COM 类工厂

检索 COM 类工厂中 CLSID 为 的组件时失败,原因是出现以下错误: 80040154。

检索COML类工厂中 CLSID为 {00024500-0000-0000-C000-000000000046}的组件时失败,原因是出现以下错误: 80070005" 《终结篇》

检索COM类工厂中CLSID为{000245000-0000-0000-C000-000000000046的组件时失败,出现错误以下80040154