0

我想使用 Process.Start 调用命令提示符命令,然后使用 StandardOutput 我想在我的应用程序中使用 StreamReader 进行读取,但是当我运行下面的程序时,在 MessageBox 中我只是找到了直到 Debug 的路径,我已经说过我的命令in arguments 不执行。

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 命令永远不会执行。

4

2 回答 2

4

如果你想运行一个命令,cmd你也必须指定/c参数:

new ProcessStartInfo("cmd.exe", "/c net view");

但是,在这种情况下,您根本不需要cmdnet是本机程序,可以按原样执行,无需外壳:

new ProcessStartInfo("net", "view");
于 2012-06-14T20:30:56.540 回答
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());
        }
    }
}
于 2012-06-14T20:43:14.440 回答