【问题标题】:Automating Office via Windows Service on Server 2008通过 Server 2008 上的 Windows 服务实现 Office 自动化
【发布时间】:2010-11-03 15:55:15
【问题描述】:

我们有一个在 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 安全属性,包括将运行它们的用户的身份更改为集成但无济于事。

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

谢谢

【问题讨论】:

  • 您可能已经知道这一点,但 Microsoft 不支持在服务器上运行 Word,并且可能违反许可条款。

标签: windows-services windows-server-2008 ms-office dcom comexception


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

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

    “Ogawa Hack”总结:为系统配置文件创建一个桌面文件夹,如下:

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

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

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

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


    [编辑:更正的链接 URL]

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

    【讨论】:

    • 请注意:如果您的应用程序编译为 x86,请使用 x86 文件夹(即使您在 x64 机器上运行)C:\Windows\System32\config\systemprofile\Desktop
    • 这只花了我 4 小时的调试时间。非常感谢你救了我。
    • 像魅力一样工作=P
    • OMFG...经过数月努力让旧 POS 在 2008R2 上运行,这就是解决方案!
    • 今天仍然有效。我希望 Windows 更新不会削弱它。
    【解决方案3】:

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

    然后按照以下说明之一:

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

    【讨论】:

    • 您对“mmc 32”的提示和 A.O. 的回答拯救了我的一天。
    【解决方案4】:

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

    下面的屏幕截图显示了您需要调出的两个对话框:

    对于 Apache:

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

    MS Word:

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

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

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

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

    【讨论】:

    • 此设置(交互式用户)也应该使用“Office Licensing COM Server 15”完成,如果它存在于列表中
    • 你成就了我的一天!谢谢!
    猜你喜欢
    • 2020-08-21
    • 1970-01-01
    • 2013-06-25
    • 1970-01-01
    • 1970-01-01
    • 2015-10-04
    • 1970-01-01
    • 2012-07-29
    • 2012-03-25
    相关资源
    最近更新 更多