У меня есть консольное приложение .NET, написанное на C # (myApp.exe), которое запускает внешнее приложение ('bob.exe'). Консольное приложение отлично работает, когда я запускаю myApp.exe вручную. Код C #, вызывающий приложение:
System.Diagnostics.ProcessStartInfo procStartInfo =
new System.Diagnostics.ProcessStartInfo("C:\\bob.exe");
procStartInfo.RedirectStandardOutput = true;
procStartInfo.UseShellExecute = false;
// Do not create the black window.
procStartInfo.CreateNoWindow = true;
// Create the process and assign its ProcessStartInfo and start it
System.Diagnostics.Process proc = new System.Diagnostics.Process();
proc.StartInfo = procStartInfo;
proc.Start();
В Windows Server 2003 я создал запланированную задачу, которая регулярно запускала myApp.exe. Он был настроен на выполнение, даже если пользователь не вошел в систему. Запланированная задача работала и называлась «bob.exe» (я смог проверить это, просмотрев выходные файлы из «bob.exe»)
Затем мы обновились до Windows Server 2012. Я создал запланированную задачу в Windows Server 2012, настроив ее на выполнение, даже если пользователь не вошел в систему, и настроил ее для Windows Server 2003.
Я установил действие для вызова 'C: \ myApp.exe', аналогично тому, как я настроил его в Windows Server 2003.
Когда запланированные задачи выполняются и я вхожу в систему, приложение «bob.exe» запускается из «myApp.exe». Однако, когда я не вошел в систему и выполняется запланированная задача, выполняется myApp.exe, но никогда не выполняется bob.exe (я могу убедиться в этом, увидев, что файлы вывода из bob.exe отсутствуют). Запланированная задача не сообщает об ошибках, а в последнем результате выполнения указано «Операция успешно завершена. (0x0)».
Я нашел похожее сообщение здесь но я не смог разрешить свою ситуацию. Что мне не хватает?