我们有一个在 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/