我想使用Process.Start调用命令提示符命令然后使用StandardOutput我想在我的应用程序中使用StreamReader读取但是当我运行下面的程序时,在MessageBox中我只找到路径直到Debug,我的命令我在论证中说过并不是代理人。
ProcessStartInfo info = new ProcessStartInfo("cmd.exe", "net view");
info.UseShellExecute = false;
info.CreateNoWindow = true;
info.RedirectStandardOutput = true;
Process proc = new Process();
proc.StartInfo = info;
proc.Start();
using(StreamReader reader = proc.StandardOutput)
{
MessageBox.Show(reader.ReadToEnd());
}
这里我的net view命令永远不会执行。
答案 0 :(得分:4)
如果要使用cmd
运行命令,则还必须指定/c
参数:
new ProcessStartInfo("cmd.exe", "/c net view");
但是,在这种情况下,您根本不需要cmd
。 net
是一个本机程序,可以按原样执行,没有shell:
new ProcessStartInfo("net", "view");
答案 1 :(得分:1)
还要记住拦截StandardErrorOutput或不会看到任何内容:
var startInfo = new ProcessStartInfo("net", "view");
startInfo.UseShellExecute = false;
startInfo.CreateNoWindow = true;
startInfo.RedirectStandardError = true;
startInfo.RedirectStandardOutput = true;
using (var process = Process.Start(startInfo))
{
string message;
using (var reader = process.StandardOutput)
{
message = reader.ReadToEnd();
}
if (!string.IsNullOrEmpty(message))
{
MessageBox.Show(message);
}
else
{
using (var reader = process.StandardError)
{
MessageBox.Show(reader.ReadToEnd());
}
}
}