我想在命令提示符上以编程方式运行以下命令,读取其输出然后只是终止命令窗口。
sc查询事件日志
当我手动运行此命令时,下面是我得到的。
以下是我的代码。
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 [版本6.3.9600](c)2013 Microsoft Corporation。 保留所有权利。
我在这里做错了什么?
答案 0 :(得分:4)
您需要调用sc.exe而不是cmd.exe:
p.StartInfo.FileName = "sc.exe";
p.StartInfo.Arguments = "query eventlog";