Estoy tratando de ejecutar un comando a través del símbolo del sistema desde una aplicación web ASP.Net. Puedo ver que el proceso comienza en el administrador de tareas en el servidor web, sin embargo, el proceso simplemente se queda allí y nunca sale ni ejecuta los comandos que especifiqué.¿Por qué el comando "cmd.exe/C" no finaliza cuando se llama a través de Process.Start()?
Process process = new Process();
ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.FileName = "cmd.exe";
startInfo.Arguments = "/C " +command;
startInfo.UserName = "myuser";
startInfo.UseShellExecute = false;
startInfo.RedirectStandardOutput = true;
startInfo.Domain = "mydomain";
startInfo.CreateNoWindow = true;
String pass = "mypass";
System.Security.SecureString secPass = new System.Security.SecureString();
foreach (char c in pass.ToCharArray())
{
secPass.AppendChar(c);
}
secPass.MakeReadOnly();
startInfo.Password = secPass;
process.StartInfo = startInfo;
process.Start();
//output = process.StandardOutput.ReadToEnd();
process.WaitForExit();
process.Close();
He intentado tanto con como sin leer la salida estándar.
La aplicación se bloqueará en process.WaitForExit();
hasta que elimine el proceso a través del administrador de tareas.
Si lo intenta leyendo la salida estándar, ¿ha mirado cuál es la salida estándar? Intenta leer el error estándar también; es posible que recibas algún tipo de mensaje de error, tal vez uno que incluso dice "Presiona cualquier tecla para continuar ..." o algo por el estilo. – GWLlosa
@GWLlosa, tanto la salida estándar como el error estándar están vacíos. Pensé en eso "Empuje cualquier tecla ...", así que intenté escribir un carácter en la entrada estándar, pero todavía nada. –
¿Por qué ejecutarlo a través de cmd? ¿Por qué no simplemente ejecutarlo directamente? –