Быстрая проверка сообщения об использовании shutdown.exe показывает, что он ожидает аргументы опции после косой черты ('/'), а не тире ('-').
Замена строки:
startInfo.Arguments = "–s –f –t " + seconds;
С:
startInfo.Arguments = "/s /f /t " + seconds;
Дает рабочий результат на моем ящике с C # express 2010.
Кроме того, вы можете перенаправить стандартную ошибку и стандартную из запущенного процесса для чтения вашимПрограмма, такая, что вы можете сказать, что произошло после того, как он запустился.Для этого вы можете сохранить объект Process и дождаться завершения основного процесса, чтобы проверить, все ли прошло хорошо.
startInfo.RedirectStandardOutput = true;
startInfo.RedirectStandardError = true;
Process p = Process.Start(startInfo);
string outstring = p.StandardOutput.ReadToEnd();
string errstring = p.StandardError.ReadToEnd();
p.WaitForExit();
К сожалению, я не могу сказать вам, почему версия командной строкипринимает префиксы 'dash' в опциях, а исполняемая версия C # - нет.Тем не менее, надеюсь, что вы ищете, это рабочее решение.
Полный список кода ниже:
int seconds = 100;
ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.CreateNoWindow = false;
startInfo.UseShellExecute = false;
startInfo.WindowStyle = ProcessWindowStyle.Hidden;
startInfo.FileName = "shutdown.exe";
startInfo.Arguments = "/s /f /t " + seconds;
startInfo.RedirectStandardOutput = true;
startInfo.RedirectStandardError = true;
Process p = Process.Start(startInfo);
string outstring = p.StandardOutput.ReadToEnd();
string errstring = p.StandardError.ReadToEnd();
p.WaitForExit();