Windows Server 2019使用Microsoft.Office.Interop.Word运行报错问题咨询
问题根因及排查方案
核心限制说明
微软官方明确不支持桌面版Microsoft Office应用在服务、非交互式任务计划这类非用户交互上下文环境中运行,Office运行依赖交互式用户会话的UI组件、用户配置文件资源,Windows Server 2019的会话隔离机制比旧版系统更严格,是同款代码旧系统正常、新系统报错的核心原因。
你遇到的0x80010105 (RPC_E_SERVERFAULT)异常本质是Word COM组件在当前运行上下文启动失败,具体触发原因和修复方案如下:
具体触发原因
- 代码冗余配置冲突:你代码中设置了
appWord.Visible = true,非交互式上下文没有可用的桌面会话渲染Word窗口,直接触发COM调用崩溃 - DCOM权限配置不完整:你仅修改了DCOM基础权限,未配置对应的启动标识,非交互式场景无法正确加载Word进程
- 路径权限不足:任务计划/服务运行的账户没有你传入的Word模板文件的读取权限,或是路径解析异常
- Desktop文件夹权限不足:你已经创建了对应路径的Desktop文件夹,但未给运行账户开放对应权限,临时文件写入失败
可行修复步骤
- 调整冗余代码:移除非必要的
Visible = true设置,调整后代码如下:
appWord = new Application(); wordDocument = appWord.Documents.Add(Template: Path.GetFullPath(...), Visible: false); appWord.Visible = false;
- 重新配置Word DCOM参数:
- 按下Win+R输入
dcomcnfg打开组件服务,依次展开「组件服务>计算机>我的电脑>DCOM配置」,找到「Microsoft Word 97 - 2003 文档」 - 右键点击属性切换到「标识」选项卡,如果任务计划/服务是用户登录后运行,选择「交互式用户」;如果需要用户未登录时后台运行,选择「下列用户」填入运行程序的账户账号密码
- 切换到「安全」选项卡,分别在「启动和激活权限」「访问权限」「配置权限」三处点击自定义,添加程序运行的账户,授予所有允许权限
- 按下Win+R输入
- 验证路径权限:确保传入
Documents.Add的模板文件对程序运行账户开放读取权限,直接传入绝对路径,避免相对路径解析错误 - 补充Desktop文件夹权限:给
C:\Windows\System32\config\systemprofile\Desktop和C:\Windows\SysWOW64\config\systemprofile\Desktop两个文件夹添加程序运行账户,授予完全控制权限 - 任务计划特殊配置:如果使用任务计划运行,打开任务属性的「常规」选项卡,勾选「使用最高权限运行」,运行账户要和DCOM配置的账户保持一致
长期兼容方案
如果需要长期在服务场景生成/处理Word文档,建议替换Office Interop方案,改用Open XML SDK、NPOI、DocX等不需要依赖Office安装的类库,从根本上避免COM交互的环境兼容问题。
内容的提问来源于stack exchange,提问作者Tomas Kroupa
相关产品推荐
相关产品推荐

