1

这是两个函数,我在两个函数中都使用了 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();
        }

这些论点有什么问题?

4

1 回答 1

0

您的 cmd.exe 缺少 /c agument。输入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# 中处理输出。

于 2013-07-30T20:44:31.590 回答