在Server 2008上通过Windows服务自动执行Office

Gra*_*eme 23 dcom windows-services ms-office comexception windows-server-2008

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

最近我们尝试将此服务移动到Windows 2008 Server计算机上并且遇到了实际问题.

Microsoft.Office.Interop.Excel.Documents.Open上的Microsoft.Office.Interop.Excel.Workbooks.Open COMException中的COMException

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

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

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

谢谢

Gar*_*ill 64

我在Windows Server 2008下从Windows服务自动化Office时遇到了问题,即使在Windows Server 2003下工作正常.问题也出现在Open调用中,因此可能是同样的问题.

我尝试按照H Ogawa在这个MSDN线程中给出的建议,它似乎工作.这很奇怪,但是对小川先生的发现感到很荣幸.

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

 C:\Windows\System32\config\systemprofile\Desktop
Run Code Online (Sandbox Code Playgroud)

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

 C:\Windows\SysWOW64\config\systemprofile\Desktop
Run Code Online (Sandbox Code Playgroud)

此外,文件夹需要对任何用户"驾驶"Office的写入权限.


[编辑:更正后的链接网址]

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

  • 请注意:如果您的应用程序编译为x86,请使用x86文件夹(即使您在x64计算机上运行)C:\ Windows\System32\config\systemprofile\Desktop (5认同)

A.O*_*.O. 5

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

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

对于Apache:

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

MS Word:

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

**如果找不到MS Word,请确保启动正确的DCOM配置(64位与32位),具体取决于您安装的Office版本.

这里有两个选项,您可以将Apache设置为使用本地系统帐户,并选中允许桌面交互的复选框.如果执行此操作,则需要将MS Word 的标识设置为交互式用户.

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