Я пытаюсь запустить пакетный файл, как другой пользователь, из своего веб-приложения. По какой-то причине командный файл зависает! Я вижу "cmd.exe" в диспетчере задач, но он просто сидит там навсегда, не может быть убит, а командный файл не запущен. Здесь мой код:
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); строка возвращает сразу, как и должно быть, но командный файл просто висит, не выполняя. Любые идеи?
РЕДАКТИРОВАТЬ: См. мой ответ ниже для содержимого командного файла.
- Файл output.txt никогда не создается.
Я добавил следующие строки:
psi.RedirectStandardOutput = true;
Process p = Process.Start(psi);
String outp = p.StandardOutput.ReadLine();
и прошел через них в режиме отладки. Код находится на ReadLine()
. Я в тупике!