Я просмотрел свой код, и он выглядит почти так же, как ваш:
ProcessStartInfo psi = new ProcessStartInfo(fileName, arguments)
{
CreateNoWindow = true,
WindowStyle = ProcessWindowStyle.Hidden,
UseShellExecute = false,
RedirectStandardOutput = true
};
Process process = Process.Start(psi);
Единственное заметное отличие (кроме форматирования и того, какой конструктор PSI мы выбрали) заключается в том, что я использовал UseShellExecute и RedirectStandardOutput, так как мне нужно было прочитать результат процесса run.
Я обнаружил, что приведенный выше код постоянно выполняет скрытый процесс в XP и Vista. Однако я также обнаружил, и вы, возможно, испытываете то же самое, что скрытый процесс может запустить другой процесс, который по умолчанию не скрыт. Другими словами, если вы запустите скрытый процесс A, а процесс A, в свою очередь, запустит процесс B, вы не сможете контролировать, как будет отображаться процесс B. Могут отображаться окна, которые вы не можете контролировать.
Надеюсь, это немного поможет. Удачи.