【发布时间】:2011-06-17 09:08:22
【问题描述】:
我正在尝试通过 ASP.Net Web 应用程序的命令提示符运行命令。我可以在 Web 服务器上的任务管理器中看到该进程启动,但是该进程只是坐在那里,永远不会退出,也不会运行我指定的命令。
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,标准输出和标准错误都是空的。我想到了“按任意键...”,所以我尝试将一个字符写入标准输入,但仍然没有。
-
为什么要通过cmd运行呢?为什么不直接运行呢?
-
在不同的机器(不是网络服务器)上运行相同的代码,它运行良好。不知道是什么问题。
-
@Petey 这对我来说毫无意义,对不起。祝您工作顺利。