gpt4 book ai didi

c# - Vista、Office Interop 不工作

转载 作者:行者123 更新时间:2023-11-30 15:13:13 25 4
gpt4 key购买 nike

有谁知道如何让 MS Office 2007 .NET C# Interop 库与 Vista 一起工作?

我有一个 .NET C# 应用程序,我已将其设置为作为 Windows 服务运行。该程序会根据情况打开一个Word或Excel模板并修改其内容,然后将文档保存回来。当我在 Windows Server 2003 或 XP 机器上使用 Office 2007 时,所有这一切都非常有效。当我将所有东西移到 Server 2008 盒子时,一切都停止工作。例如,在 Excel 中,我收到一个 COM 异常,告诉我当文件明明存在时无法打开 Excel 文件,我可以手动打开它。 Windows 服务在我登录机器时使用的同一用户帐户下运行,该帐户是管理员。

有人知道该怎么办吗?

最佳答案

在 Vista 和 Windows Server 2008 上,服务在称为 Session0 的东西中运行。在 Vista 之前,常规程序将与服务一起在 Session0 中运行。

这意味着 Session0 已成为没有桌面的荒地,您的服务甚至无法访问 explorer.exe。我很确定问题出在 Office 应用程序期望能够访问一些通常位于桌面上的组件。

由于 Excel、Word 等仅在桌面版 session 中受支持,因此您只有几个选择:

  1. 在服务属性的“登录”选项卡中设置“桌面”复选框,并祈祷它能安抚办公室大神。 (它可能不会。)
    • 尝试 1 后,检查您的代码并尝试删除/解决导致它崩溃的任何问题。
  2. 使用远程处理/WCF 使执行互操作的服务器工作,并使您的服务与其通信。
    • 您需要有一个已登录的交互式用户,并且该用户需要以某种方式启动服务器应用程序。也许最好使用自动启动。
    • 您可以尝试打开自动登录。 http://support.microsoft.com/kb/324737
  3. 尝试使用 CreateProcessAsUser 和 friend 模拟登录用户。
    • 注意:除非用户实际登录,否则我不知道它的效果如何,因此它可能不会比上面的 2 更有用,而且更难实现。 (需要 P/Invoke)
  4. 重写您的程序以使用 OpenXML SDK 或使用类似 SpreadsheetGear 的东西。

关于c# - Vista、Office Interop 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/241190/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com