Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Microsoft.Office.Interop.Excell dll的C#应用程序在安装Windows trusted apps时引发异常(错误:80080005)_C#_Excel_Windows Store Apps_Ms Office - Fatal编程技术网

使用Microsoft.Office.Interop.Excell dll的C#应用程序在安装Windows trusted apps时引发异常(错误:80080005)

使用Microsoft.Office.Interop.Excell dll的C#应用程序在安装Windows trusted apps时引发异常(错误:80080005),c#,excel,windows-store-apps,ms-office,C#,Excel,Windows Store Apps,Ms Office,问题: 在运行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) 获得以下例外情况: 由

问题: 在运行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-0000000000 46}的组件的COM类工厂失败:80080005服务器执行失败(HRESULT异常:0x80080005(CO_E_服务器执行失败))

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

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
代码片段: 应用程序正在尝试创建Microsoft.Office.Interop.Excel的实例。应用程序:

    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)的计算机中观察到此问题


有人能帮我解决这个问题吗。

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

在Microsoft页面上,您可以看到有关已安装office版本的
Introp
库的信息


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

在数小时的web搜索后,查找有关此问题的答案,我发现,在组件服务>计算机>我的计算机>DCOM配置>Microsoft Excel应用程序>>属性面板-[Identity tab]下,Windows 10的默认设置是启动用户,而在Windows 7上,默认设置是交互用户。将Windows 10上的身份设置更改为交互式用户为我解决了这个问题。
希望这能节省我找到答案所花的时间。

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