【问题标题】:C# application using Microsoft.Office.Interop.Excell dll throws exception(error: 80080005) when Windows trusted apps is installed with OS installation使用 Microsoft.Office.Interop.Excell dll 的 C# 应用程序在安装 Windows 受信任的应用程序并安装操作系统时抛出异常(错误:80080005)
【发布时间】:2025-12-05 02:25:02
【问题描述】:

问题: 运行在 VS 2013 中创建的 C#应用程序时,我在 Win10 PC 中遇到问题。该应用程序在尝试创建 excel 实例时总是抛出异常。 Microsoft.Office.Interop.Excel 被添加到项目参考(:\Program Files (x86)\Microsoft Visual Studio 12.0\Visual Studio Tools for Office\PIA\Office15\Microsoft.Office.Interop.Excel.dll)

得到以下异常:

由于以下错误,检索具有 CLSID {00024500-0000-0000-C000-000000000046} 的组件的 COM 类工厂失败:80080005 服务器执行失败(来自 HRESULT 的异常:0x80080005 (CO_E_SERVER_EXEC_FAILURE))

从事件查看器中,我看到了与 excel.exe 版本 16 bing 相关的错误:

Faulting application name: EXCEL.exe, version: 16.0.8528.2136, time stamp: 0x59d6c372
Faulting module name: KERNELBASE.dll, version: 10.0.16299.371, time stamp: 0xee297154
Exception code: 0xc06d007f
Fault offset: 0x00103ef2
Faulting process id: 0x2c8c
Faulting application start time: 0x01d41f1db8e05601
Faulting application path: C:\Program Files\WindowsApps\Microsoft.Office.Desktop.Excel_16000.8528.2136.0_x86__8wekyb3d8bbwe\Office16\EXCEL.exe
Faulting module path: C:\windows\System32\KERNELBASE.dll
Report Id: 5c23fa18-770c-4233-b803-e57c2bf68174
Faulting package full name: Microsoft.Office.Desktop_16000.8528.2136.0_x86__8wekyb3d8bbwe
Faulting package-relative application ID: Excel

代码 sn-p: 应用程序正在尝试创建 Microsoft.Office.Interop.Excel.Application 的实例:

    public ExcelReader()
    {
        try
        {
            m_excelApplication = new Microsoft.Office.Interop.Excel.Application();
        }
        catch(System.Exception Exp)
        {
            MessageBox.Show( Exp.Message );
        }
    }

环境详情: 在操作系统安装期间,默认情况下会安装一些称为受信任的应用程序的东西。我们可以在 Windows 选项中看到与 Excel 2016、Word 2016 等相关的图标。 但在我的机器上,只有 Office 2013(64 位)在全新操作系统安装后安装。我在“C:\Program Files\Microsoft Office\Office15\EXCEL.EXE”中有 MS Office 2013 的 exe 文件

为什么应用启动时会调用 excel.exe 版本 16(C:\Program Files\WindowsApps)

在安装了 MS Office 2016、MS Office 2013默认安装了受信任的应用程序(2016)的机器上观察到了问题。

有人可以帮我解决这个问题吗?

【问题讨论】:

    标签: c# excel windows-store-apps ms-office


    【解决方案1】:

    在网上搜索了几个小时以寻找有关此问题的答案后,我发现在组件服务 > 计算机 > 我的电脑 > DCOM 配置 > Microsoft Excel 应用程序 > 属性面板 - [身份选项卡] 下,默认设置对于 Windows 10 是 启动用户,而在 Windows 7 上默认是 交互式用户。将 Windows 10 上的身份设置更改为 交互式用户 为我解决了这个问题。 希望这可以节省其他人我找到答案所花费的时间。

    【讨论】:

      【解决方案2】:

      由于Interop 库而发生此问题。互操作库在不同版本中有不同的方法。您必须检查您当前拥有的 Interop 库的版本,并使用当前安装的 Office 所需的适当库。

      thatMicrosoft 页面上,您可以看到可以获取Introp 已安装Office 版本的库的信息。

      如果您想支持多个 Office 版本,您必须安装客户端可以拥有的最低版本(例如 2010),然后编写将检测 MS Office 版本并通过 CLSID 使用其功能和方法的代理类。

      【讨论】:

      • 但是为什么只有在操作系统安装中存在受信任的应用程序时才会出现此问题。
      • 因为默认情况下,您的应用程序会转到 GAC(全局程序集缓存)并为 Office 2016 获取库,但您需要运行 2013。要解决此问题,您必须制作包含在项目中的库作为嵌入。在这种情况下,将使用您的库而不是 GAC 中的库。
      • 注意:在我的机器上我没有安装office 16。仅安装 Office 2013。
      • 应用在什么基础上默认获取库
      • 这就像一个一般规则,首先应用程序尝试从 GAC 获取具有相同签名的库(如果它们没有嵌入),然后在您的项目中查找库。
      最近更新 更多