Я пытаюсь запустить пакетный файл, как другой пользователь, из своего веб-приложения. По какой-то причине командный файл зависает! Я вижу «cmd.exe» в диспетчере задач, но он просто сидит там навсегда, не может быть убит, а командный файл не запущен. Вот мой код:C# .Net: Почему мой процесс.Start() висит?
SecureString password = new SecureString();
foreach (char c in "mypassword".ToCharArray())
password.AppendChar(c);
ProcessStartInfo psi = new ProcessStartInfo();
psi.WorkingDirectory = @"c:\build";
psi.FileName = Environment.SystemDirectory + @"\cmd.exe";
psi.Arguments = "/q /c build.cmd";
psi.UseShellExecute = false;
psi.UserName = "builder";
psi.Password = password;
Process.Start(psi);
Если вы не догадались, этот пакетный файл строит мое приложение (другое приложение, чем тот, который выполняет эту команду).
Process.Start (psi); строка возвращает сразу, как и должно быть, но командный файл просто висит, не выполняя. Есть идеи?
EDIT: См. Мой ответ ниже для содержимого командного файла.
- Не удалось создать output.txt.
Я добавил эти строки:
psi.RedirectStandardOutput = true;
Process p = Process.Start(psi);
String outp = p.StandardOutput.ReadLine();
и прошел через них в режиме отладки. Код зависает на ReadLine()
. Я в тупике!
Можете ли вы опубликовать код для своего командного файла и попробовали испускать эхо из своего командного файла, чтобы вы могли видеть, что он запускается? – 2008-08-29 08:40:03