2013-07-29 43 views
1

這是兩個函數即時使用wevtutil在這兩個函數中這個參數在bat文件中工作,但不工作在這裏我找不到在contentDirectory中創建的任何文本文件。 我猜想有些事情是錯誤的。如何在Process中使用wevtutil.exe命令行?

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(); 
     } 

參數有什麼問題?

+0

你是否以管理員身份運行程序? – keyboardP

+0

是的,我願意。我已經以管理員身份運行視覺工作室。即時通訊使用其他程序通過CMD需要管理員,他們正在工作。 – DanielVest

回答

0

您的cmd.exe缺少a/c agument。在termainal中輸入cmd.exe /?以獲取更多信息。

你可以只改變精氨酸太行:

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 /標準錯誤,讓你來處理在C#中的輸出。