24

我们有一个在 2003 Server 上运行的 Windows 服务。它使用 Word Interop 打开一个源 Word 文档,然后用它做一些事情。它也同样适用于 Excel 和 PowerPoint 文件。

最近,我们尝试将此服务移至 Windows 2008 Server 机器上,但遇到了实际问题。

Microsoft.Office.Interop.Excel.Workbooks.Open 处的 COMException Microsoft.Office.Interop.Word.Documents.Open 处的 COMException

当 Windows 服务在 2008 Server 上运行时,我得到了上述异常。查看任务管理器,应用程序确实加载正常,但不久之后又关闭了。

我已经阅读了有关 Vista 和 Server 2008 不再具有 Session0 的内容,并尝试相应地更改 Office DCOM 安全属性,包括将运行它们的用户的身份更改为集成但无济于事。

有谁知道这是否可能?这是我们系统的一个基本方面,因此我们需要能够做到这一点。

谢谢

4

4 回答 4

70

我在 Windows Server 2008 下从 Windows 服务自动化 Office 时遇到了问题,即使在 Windows Server 2003 下工作正常。这个问题也出现在 Open 调用中,所以它可能是同一个问题。

我尝试按照 H Ogawa 在此 MSDN 线程中给出的建议,它似乎有效。这很奇怪,但要感谢小川先生发现它。

“Ogawa Hack”摘要:为系统配置文件创建一个桌面文件夹,如下所示:

 C:\Windows\System32\config\systemprofile\Desktop

并且,如果在 64 位机器上运行,则创建另一个,如下所示:

 C:\Windows\SysWOW64\config\systemprofile\Desktop

此外,文件夹需要任何用户“驾驶”Office 的写入权限。


[编辑:更正的链接 URL]

[编辑 2:澄清在 64 位 Windows 上,您需要两个文件夹,而不仅仅是 WOW64 一个]

于 2009-11-05T12:22:10.097 回答
6

如果您使用的是 Apache,您可能还需要按照以下步骤使 MS Word 正常工作(以及其他答案中概述的所有内容):

下面是一个屏幕截图,显示了您需要调出的两个对话框: 在此处输入图像描述

对于阿帕奇:

服务->Apache->右键单击(属性)->登录选项卡

微软字:

启动 dcomcnfg.exe->控制台根目录->组件服务->计算机->我的电脑->DCOM 配置->查找 Microsoft 应用程序->右键单击(属性)->身份选项卡

**如果您找不到 MS Word,请确保根据您安装的 Office 版本启动正确的 DCOM 配置(64 位与 32 位)。

这里有两个选项,您可以将 Apache 设置为使用本地系统帐户并选中复选框以允许桌面交互。如果这样做,则需要将MS Word的Identity设置为Interactive User

否则,您需要将两者都设置为同一个用户(理想情况下是登录的用户),如图所示。

于 2014-05-29T20:43:40.033 回答
2

好吧,您需要运行“MMC -32”(命令提示符)来启动 32 位 MMC,然后添加组件服务(文件 > 添加/删除管理单元的菜单)

然后按照以下说明之一进行操作:

http://theether.net/download/Microsoft/kb/288366.html

于 2013-09-20T13:59:09.707 回答
0

这也发生在启用 UAC 的 Vista 上。您可能想尝试将 DCOM 身份设置为管理员帐户并再次测试。

我最近也开始在尝试通过互操作服务在 Excel 中打开工作簿的 XP 机器上遇到此问题,但尚未找到解决方法。我本人希望社区能够提供任何其他见解......

于 2009-06-17T13:20:36.730 回答