如何使用 cmd.exe 读取命令 运行 的输出

how to read output of a command run using cmd.exe

我想以编程方式 运行 在命令提示符下执行命令,读取其输出,然后终止命令 window。

sc query eventlog

当我手动 运行 这个命令时,下面是我得到的结果。

这是我的代码。

class Program
    {
        static string output;
        static void Main(string[] args)
        {
            Process p = new Process();
            p.StartInfo.UseShellExecute = false;
            p.StartInfo.RedirectStandardOutput = true;
            p.StartInfo.FileName = "cmd.exe";
            p.StartInfo.Arguments = "sc query eventlog";
            p.OutputDataReceived += p_OutputDataReceived;
            p.Start();


            p.BeginOutputReadLine();

            p.WaitForExit();
            p.Kill();
        }

        static void p_OutputDataReceived(object sender, DataReceivedEventArgs e)
        {
            output += e.Data + Environment.NewLine;
        }

但是在我的例子中,它只是一直在等待 WaitForExit 的调用。为此,我可能不得不终止这个过程。但我在输出变量中看到以下内容。

Microsoft Windows [Version 6.3.9600] (c) 2013 Microsoft Corporation. All rights reserved.

我做错了什么?

您需要调用 sc.exe 而不是 cmd.exe:

p.StartInfo.FileName = "sc.exe";
p.StartInfo.Arguments = "query eventlog";