2009-11-04 68 views
9

我有一个小的.NET应用程序,我通过任务计划程序在Windows 2008 Server下运行。这个应用程序需要打开一个excel文件,然后将其保存为csv。当我尝试打开工作簿时,任务失败。如果我在没有任务调度程序运行的情况下手动运行它,该应用程序工作正常。如何使用“与桌面交互”从调度程序运行Windows 2008任务

我已将它设置为“以最高权限运行”并已选中“运行天气用户已登录或未登录”。

我的猜测是这个过程需要与桌面进行交互,类似于检查服务上的“与桌面交互”标志。但是我一直无法为计划任务找到类似的东西。

这里是失败的代码:(失败的workbook.open调用)

public static void ConvertExcelToCsv(string source, string destination) 
{ 
    if (File.Exists(destination)) File.Delete(destination); 

    Application xl = new Application(); 

    try 
    { 
     Workbook workbook = xl.Workbooks.Open(source, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing); 
     Worksheet ws = (Worksheet)workbook.Sheets[1]; 
     ws.SaveAs(destination, XlFileFormat.xlCSV, Type.Missing, Type.Missing, false, false, Type.Missing, Type.Missing, Type.Missing,true); 

     Marshal.ReleaseComObject(ws); 
    } 
    finally 
    { 
     xl.DisplayAlerts = false; 
     xl.Quit(); 

     Marshal.ReleaseComObject(xl);     
    } 

} 

回答

8

我已经运行在Windows Server 2008从Windows服务自动化办公,即使是在正常工作的问题Windows Server 2003.在打开呼叫时也会出现此问题,因此可能会出现同样的问题。

我试着按照H小川在this MSDN thread给出的建议,它似乎工作。这是奇怪的,但小川先生发现它的荣誉。

总结了“小川哈克”的:创建系统配置文件的桌面文件夹,因为无论是

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

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

...取决于你是否拥有64位视窗。

此外,该文件夹需要写入权限,无论用户在“驾驶”Office。

[编辑:更正链接网址]

+1

它的工作原理!这太疯狂了,我永远也找不到那个谢谢。另外上面的链接是不正确的,你可以找到这里描述的文章:http://social.msdn.microsoft.com/Forums/en-US/innovateonoffice/thread/b81a3c4e-62db-488b-af06-44421818ef91 – Kelly 2009-11-05 15:16:45

+0

你也可以需要为驱动服务器上的Office自动化的用户帐户禁用UAC - 这对我来说是最后的结局。 – 2011-02-15 22:52:35

+0

我跟着没有为我工作的解决方案。我对为我工作的“Microsoft Excel应用程序”的dcom标识做了一些更改。我已将身份更改为“此用户”并提供了管理员帐户凭据。这对我来说工作得很好,我们的Sharepoint Webpart开始按照它应该的方式工作。 – 2011-02-15 22:52:52

相关问题