windows-services - 通过 Server 2008 上的 Windows 服务实现 Office 自动化

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

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

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

谢谢

最佳答案

我在 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 一个]

关于windows-services - 通过 Server 2008 上的 Windows 服务实现 Office 自动化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1006923/

相关文章:

windows-server-2008 - Windows 2008 Server Core 上的 VMware Server 2

java - EWS-Java-API - EmailMessage.send 到 java.lang.NullPointerException : format == null

c# - Visual Studio,C# 如何将文档文件添加为资源

c# - 获取 Windows 服务的完整路径

c# - 如何在 C# 中将参数传递给 Windows 服务?

c# - 可以动态接受控制台命令的 Windows 服务应用程序

linux - 是否可以在 linux 上的 qt 中渲染 .doc 文件?

visual-studio-2010 - 如何将 Visual Studio 调试器附加到托管类型进程?

asp.net - MSDeploy.exe 可以以管理员身份连接,但不能以任何其他 Windows 帐户身份连接

c# - 为什么这会给我两组不同的时区?