Полагаю, это проблема, связанная с безопасностью пользователя, для которого выполняется запланированное задание. Т.е.: программа отлично работает как вы, но как пользователь запланированной задачи, она не может запускать "program.exe" (или, что еще хуже, программировать).
Вы можете просмотреть журнал планировщика заданий (в панели управления планировщика заданий -> расширенное меню). Он должен дать код выхода для вашей задачи как ноль (или, возможно, один). Что-то не так, если вы получаете очень большой код выхода.
Да, и Process.WaitForExit (), вероятно, чище, чем ваш цикл опроса.