【问题标题】:Differences in execution of console application directly from .exe vs executed via task schedule?直接从 .exe 执行控制台应用程序与通过任务计划执行的差异?
【发布时间】:2012-05-30 13:16:26
【问题描述】:

我在 Window server 2008 上工作,在这个服务器上我开发了一个 vb.net 2008 控制台应用程序,它打开一个 excel 2003 文件并使用它的内容来创建一个 xml 文件,所以我有两种情况:
1。程序执行的差异: 如果我从 Visual Studio 或直接从可执行文件运行应用程序,它会毫无问题地打开并处理 excel,但如果我在 Windows 任务调度程序或执行的 adtempus 中配置了任务该程序失败并抛出此异常:

HRESULT 的异常:Microsoft.Office.Interop.Excel.Workbooks.Open 中的 0x800A03EC-(字符串文件名、对象 UpdateLinks、对象只读、对象格式、对象密码、对象 WriteResPassword、对象 IgnoreReadOnlyRecommended、对象来源、对象分隔符、对象可编辑、对象通知、对象转换器、对象 AddToMru、对象本地、对象 CorruptLoad) 在 .Module1.convertExcelToXmlFile(String excelFile)

我已经阅读了很多有关此异常的信息,但目前我无法解决,所以我想知道该程序如何从 Visual Studio 或直接从执行中正确执行,但如果这两种情况都在同一个服务器?有没有办法解决这个问题?


2. 在控制台应用程序中,当我使用 open 方法打开 excel 文件时,excel 中的文件会出现几秒钟然后关闭,有没有办法访问 excel 文件内容但文件不显示在 Ms Excel 中?

谢谢。

【问题讨论】:

    标签: vb.net visual-studio-2008 exception console-application excel-2003


    【解决方案1】:

    您不应在无人参与的过程中使用 Office Interop。

    Microsoft 目前不推荐也不支持任何无人值守、非交互式客户端应用程序或组件(包括 ASP、ASP.NET、DCOM 和 NT 服务)的 Microsoft Office 应用程序自动化,因为 Office 可能表现出不稳定Office 在此环境中运行时的行为和/或死锁。

    如果您要构建在服务器端上下文中运行的解决方案,您应该尝试使用已确保无人值守执行安全的组件。或者,您应该尝试找到允许至少部分代码在客户端运行的替代方案。如果您使用服务器端解决方案中的 Office 应用程序,该应用程序将缺少许多成功运行所需的功能。此外,您将在整体解决方案的稳定性方面承担风险。

    http://support.microsoft.com/?id=257757

    有许多产品可以在无人看管的情况下处理 Excel 文档并正确运行。

    【讨论】:

      【解决方案2】:

      您尝试打开的 Excel 文件是否在网络上?

      如果是这样,问题很可能是因为您的任务计划程序服务及其运行的任何作业(默认情况下)在本地 SYSTEM 帐户下运行,该帐户禁止访问网络。

      如果您将任务更改为在其他帐户下运行(例如,您已授予远程文件共享权限的域帐户)。 (请注意,此更改可能会影响其他计划任务的运行方式,因此您需要非常确定所需的权限。)

      【讨论】:

      • 嗨,该文件位于同一台服务器中,我直接从 Visual Studio 和任务计划或 adtempus 中以两种方式运行程序
      • 好吧,这排除了我上面的答案:)“找不到文件”类型错误的其他常见原因如何,例如:您是否使用完整路径而不是相对路径(因为任务可能是从不同的工作目录执行)?或者,带空格的文件路径中是否缺少引号?
      【解决方案3】:

      万一你还没有弄清楚,最有可能对我有用的解决方案可以在这个 URL 上找到:

      https://social.msdn.microsoft.com/Forums/en-US/b81a3c4e-62db-488b-af06-44421818ef91/excel-2007-automation-on-top-of-a-windows-server-2008-x64?forum=innovateonoffice

      如果您的服务器是 64 位服务器,请在下面提到的路径中创建一个名为“Desktop”的文件夹,即 C:\Windows\SysWOW64\config\systemprofile\Desktop

      如果您的服务器是 32 位服务器,请将该文件夹设为 C:\Windows\System32\config\systemprofile\Desktop

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-10-08
        • 2019-03-27
        • 1970-01-01
        • 2022-01-14
        • 2012-11-10
        • 2011-04-19
        • 2017-08-22
        • 2017-11-19
        相关资源
        最近更新 更多