我试图通过命令提示符从ASP.Net Web应用程序运行命令。我可以在Web服务器上的任务管理器中看到该进程启动,但是该进程只是坐在那里,并且不会退出,也不会运行我指定的命令。当通过Process.Start()调用时,为什么“cmd.exe/C命令”不会结束?
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();
我已经试过,没有阅读标准输出。
应用程序将挂在process.WaitForExit();
,直到我杀通过任务管理器的进程。
如果您尝试读取标准输出,您看过标准输出是什么?尝试阅读标准错误;你可能会得到某种错误信息,也许有人甚至会说“按任意键继续...”,或者出现这种情况。 – GWLlosa 2011-01-28 16:58:27
@GWLlosa,标准输出和标准错误都是空的。我想到了“按任意键......”,所以我试着给标准输入写一个字符,但还是什么都没有。 – 2011-01-28 17:15:30
为什么通过cmd运行它?为什么不直接运行它? – 2011-01-28 17:46:15