c# - 使用 Microsoft.Office.Interop.Excell dll 的 C# 应用程序在安装 Windows 受信任的应用程序并安装操作系统时抛出异常(错误:80080005)
问题描述
问题: 我在运行在 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
代码片段: 应用程序正在尝试创建 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)的机器上观察到问题。
有人可以帮我解决这个问题。
解决方案
经过数小时在网上搜索有关此问题的答案后,我发现在组件服务 > 计算机 > 我的电脑 > DCOM 配置 > Microsoft Excel 应用程序 >> 属性面板 - [身份选项卡]下,Windows 10 的默认设置是启动用户,而在 Windows 7 上,默认用户是交互式用户。将 Windows 10 上的身份设置更改为交互式用户为我解决了这个问题。希望这可以节省其他人我找到答案所花费的时间。
推荐阅读
- macos - 如何从命令行在 Mac 上运行 MSTest 单元测试?
- javascript - 如何将多个类属性设置为一个对象的属性
- r - (R) 将文本添加到字符串值的 for 循环不起作用
- foreign-keys - 用于在线学生监控系统的 Mysql 数据库设计的数据库错误
- r - 如何在 for 循环中为数据框分配名称?在 R 中
- angular - 如何重新加载/刷新动态注入的组件Angular 6
- python - 如何从控制台删除消息?
- ripgrep - 使用 ripgrep 搜索单词的开头/结尾
- json - Angular 2如何动态绑定复选框并在单击提交按钮时返回选中的复选框ID
- generics - Kotlin 中的通用约束,这仅仅是一个方差问题吗?