如何在进程中使用wevtutil.exe命令行?

时间:2013-07-29 01:53:33

标签: c# windows batch-file event-log

这是两个函数我在两个函数中使用wevtutil这个参数在bat文件中工作但在这里工作我无法找到在contentDirectory中创建的任何文本文件。 我认为论证有些不对劲。

private void SystemEvents()
        {
            Process proc = new Process();
            proc.EnableRaisingEvents = true;
            proc.StartInfo.UseShellExecute = false;
            proc.StartInfo.FileName = "cmd.exe";
            proc.StartInfo.CreateNoWindow = true;
            proc.StartInfo.WorkingDirectory = contentDirectory;
            proc.StartInfo.Arguments = "wevtutil qe system /rd:true /f:text> eventsys.txt";
            proc.Start();
            proc.WaitForExit();
            proc.Close();
        }


private void AppEvents()
        {
            Process proc = new Process();
            proc.EnableRaisingEvents = true;
            proc.StartInfo.UseShellExecute = false;
            proc.StartInfo.FileName = "cmd.exe";
            proc.StartInfo.CreateNoWindow = true;
            proc.StartInfo.WorkingDirectory = contentDirectory;
            proc.StartInfo.Arguments = "wevtutil qe application /rd:true /f:text> eventapp.txt";
            proc.Start();
            proc.WaitForExit();
            proc.Close();
        }

参数有什么问题?

1 个答案:

答案 0 :(得分:0)

您的cmd.exe缺少a / c文件。在termainal中键入cmd.exe /?以获取更多信息。

你也可以改变Arg线:

proc.StartInfo.Arguments = "/c wevtutil qe application /rd:true /f:text";

但实际上我想你想要做这样的事情。

        Process proc = new Process();
        proc.EnableRaisingEvents = true;
        proc.StartInfo.UseShellExecute = false;
        proc.StartInfo.FileName = "wevtutil";
        proc.StartInfo.CreateNoWindow = true;            
        proc.StartInfo.Arguments = "qe application /rd:true /f:text";

然后重定向stdout / stderr以允许您在C#中处理输出。