我们有一个在 2003 Server 上运行的 Windows 服务。它使用 Word Interop 打开源 Word 文档,然后对其执行一些操作。Excel 和 PowerPoint 文件也同样如此。

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

Microsoft.office.interop.excel.workbooks.open cosxception在Microsoft.office.Interop.Word.documents.open上访问

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

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

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

谢谢

有帮助吗?

解决方案

我在 Windows Server 2008 下通过 Windows 服务实现 Office 自动化时遇到了问题,尽管在 Windows Server 2003 下运行良好。Open调用时也出现该问题,所以可能是同样的问题。

我尝试遵循 H Okawa 的建议 这个 MSDN 线程, ,而且它似乎有效。虽然很奇怪,但是还是对先生表示敬意。小川发现了它。

“小川黑客”摘要:为系统配置文件创建一个桌面文件夹,如下:

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

, ,如果在 64 位机器上运行,则创建 其他 一,如:

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

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


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

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

其他提示

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

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

对于Apache:

服务 - > Apache->右键单击(属性) - >登录标签

MS Word:

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

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

此处有两个选项,您可以将Apache设置为使用本地系统帐户并选中允许桌面交互的复选框。如果您这样做,那么您需要将MS Word的身份设置为交互式用户

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

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

然后按照其中一条说明进行操作:

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

在启用了UAC的Vista上也会发生这种情况。您可能希望尝试将DCOM标识设置为管理员帐户并再次对其进行测试。

我最近也开始在XP机器上尝试通过互操作服务在Excel中打开工作簿时遇到此问题,但尚未找到解决方法。我自己想要社区可以抛弃任何其他见解......

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top