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