如何通过“与桌面交互”从调度程序运行Windows 2008任务

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

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

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

这是失败的代码:(它在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); } } 

我在使用Windows Server 2008的Windows Service中自动执行Office时遇到了问题,即使在Windows Server 2003下也能正常工作。在Open调用中也会出现问题,因此可能会出现同样的问题。

我尝试遵循H Ogawa在这个MSDN线程中给出的build议,它似乎工作。 这是奇怪的,但小川先生发现它的荣誉。

“Ogawa Hack”小结:为系统configuration文件创build一个桌面文件夹

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

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

取决于你是否有64位Windows。

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

[编辑:更正的链接URL]