【发布时间】:2014-02-03 16:51:53
【问题描述】:
我尝试使用在单独的 Windows 服务下运行的 Office.Interop 转换 Office 文档。 此服务在特定帐户(将来的用户名)下运行。
为此帐户设置了所有文件夹访问权限。当我尝试创建任何 Office 应用程序(例如,var app=new Excel.Application())时,我的代码将失败并出现异常:
检索具有 CLSID {XXXX} 的组件的 COM 类工厂失败,原因是以下错误:E_ACCESSDENIED。
好的,但是我已经为这个 CLSID 配置了 DCOM 权限!我打开 dcomcnfg.exe ,选择具有此 CLSID 的组件,打开设置,安全性并看到此服务的用户拥有此组件的所有权限。
为什么会抛出这个异常?
【问题讨论】:
-
我认为您不能(编辑:应该)在服务中使用 Office 的东西。商业 Aspose 公司还有更多in-depth about why。
-
@UweKeim 当然,您可以在窗口服务中使用 Office 互操作。
-
@UweKeim 是的,你可以!我们销售包含该功能的软件。但微软不支持
-
我们很久以前就遇到过类似的问题。我完全忘记了,但最终我们需要以服务“运行方式”的用户身份登录到运行办公室的机器
-
服务使用的是哪个帐号?本地系统?