1

我有一个在 SBS 2008 服务器上运行的程序,该服务器安装了 Office 2007,并在通过电子邮件发送的 Excel 文件中创建报告。我正在使用 NetOffice 来创建 Excel 文件,并且它在大多数情况下都能正常工作。但是,它经常抛出 File Not Found 异常并失败。

完整的例外是:

内部异常:System.IO.FileNotFoundException:检索具有 CLSID {00024500-0000-0000-C000-000000000046} 的组件的 COM 类工厂失败,原因是以下错误:8007007e 找不到指定的模块。(来自 HRESULT 的异常:0x8007007E)。在 System.Runtime.Remoting.RemotingServices.AllocateUninitializedObject(RuntimeType objectType) 在 System.Runtime.Remoting.Activation.ActivationServices.CreateInstance(RuntimeType serverType) 在 System.Runtime.Remoting.Activation.ActivationServices.IsCurrentContextOK(RuntimeType serverType, Object[] 道具, Boolean bNewObj) 在 System.RuntimeTypeHandle.CreateInstance(RuntimeType 类型, Boolean publicOnly, Boolean noCheck, Boolean& canBeCached, RuntimeMethodHandleInternal& ctor, Boolean& bNeedSecurityCheck) 在 System.RuntimeType.CreateInstanceSlow(Boolean publicOnly,

如果我立即重新运行该程序,它将始终成功运行。

我已经尝试全部重建,替换服务器上的文件,在 VS 2019 和 2017 中编译。

4

1 回答 1

0

我终于能够解决这个问题。

我遵循了有关根据需要创建桌面文件夹的建议,此处对此进行了说明: Why does systemprofile need Desktop folder to open excel file

我使用了 dcomcnfg.exe 并设置了 Microsoft Excel 应用程序属性的安全性以包括运行计划任务的用户。

都没有奏效。

最后,幸运的是,我仔细检查了安全性,然后单击了“身份”选项卡。我将其更改为“启动用户”而不是“交互式用户”,现在我所有使用 NetOffice 插件的程序都可以通过任务管理器运行。

我相信所有三个元素都需要到位,桌面文件夹、适当的安全性和适当的身份设置。

为了获得安全和身份设置,我运行了 dcomcnfg.exe Expanded DCOM Config 右键单击​​ Microsoft Excel 应用程序 单击属性 编辑安全选项卡 编辑身份

在此处输入图像描述

于 2020-04-23T14:19:54.137 回答