直接从.exe执行控制台应用程序与通过任务计划执行的差异?

时间:2012-05-30 13:16:27

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

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

来自HRESULT的异常:0x800A03EC- at Microsoft.Office.Interop.Excel.Workbooks.Open(String Filename,Object UpdateLinks,Object ReadOnly,Object Format,Object Password,Object WriteResPassword,Object IgnoreReadOnlyRecommended,Object Origin,Object Delimiter,Object Editable,Object Notify,Object Converter,Object AddToMru,Object Local,Object CorruptLoad)    at .Module1.convertExcelToXmlFile(String excelFile)

我已经阅读了很多关于这个异常,但是目前我无法解决,所以我想知道这个程序如何从Visual Studio正确执行,或者直接从执行执行但是当它执行任务时如果两个情况都在同一台服务器有没有办法解决这个问题?


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

感谢。

3 个答案:

答案 0 :(得分:1)

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

  

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

     

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

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

有许多产品会操纵Excel文档并在无人看管的情况下正确运行。

答案 1 :(得分:0)

您尝试在网络上打开Excel文件吗?

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

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

答案 2 :(得分:0)

如果您还没有弄明白,可以在此网址找到最适合我的解决方案:

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