Como executar uma tarefa do Windows 2008 a partir do agendador com “interagir com a área de trabalho”
Eu tenho um pequeno aplicativo .net que estou executando no Windows 2008 Server através do Agendador de Tarefas. Este aplicativo precisa abrir um arquivo excel e salvá-lo como csv. A tarefa falha quando tento abrir a pasta de trabalho. Se eu executá-lo manualmente sem o agendador de tarefas em execução, o aplicativo funciona bem.
Eu tenho isso configurado para "Executar com privilégios mais altos" e ter "Executar o usuário do clima está conectado ou não" marcado.
Meu palpite é que esse processo precisa interagir com a área de trabalho de forma semelhante à verificação do sinalizador "interagir com a área de trabalho" em um serviço. Mas não consegui encontrar algo semelhante para tarefas agendadas.
Aqui está o código que está falhando: (falha na chamada 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);
}
}