2011-10-24 106 views
0

我的應用程序啓動「C:\ Windows \ System32 \ Msra.Exe」來控制域計算機。有沒有一種方法可以捕獲此msra.Exe顯示的錯誤消息。 (即來自msra.exe的內部錯誤消息,而不是來自我的應用程序的內部錯誤消息)。 該應用程序本身是一個Windows窗體應用程序。C# - 捕獲Windows應用程序輸出

任何幫助表示讚賞。

啓動MSRA的代碼位於下方...它只是完整應用程序的一個片段。

string msra = "C:\\Windows\\System32\\runas.exe"; 

string domainname = "**********"; 
string domaincontroller = "*************"; 

if (File.Exists(msra) == false) 
{ 
    System.Windows.Forms.MessageBox.Show("Runas.exe not found.\n\rPlease contact your internal IT support.", "Fatal Error", System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Error); 
} 
else 
{ 
    try 
    { 
     Process p = new Process(); 
     p.StartInfo.UseShellExecute = true; 
     p.StartInfo.WindowStyle = ProcessWindowStyle.Normal; 
     p.StartInfo.ErrorDialog = true; 
     p.StartInfo.FileName = msra; 
     p.StartInfo.Arguments = "/noprofile /netonly /user:" + domainname + "\\" + username + " \"cmd /server:" + domaincontroller + " /C msra.exe /offerra " + computerip + "\""; 
     p.Start(); 
     p.Dispose(); 
     Thread.Sleep(1700); 
     SendKeys.SendWait(password); 
     SendKeys.SendWait("{ENTER}"); 
    } 
    catch 
    { 
     System.Windows.Forms.MessageBox.Show("MSRA could not be started for an unknown reason"); 
    } 
} 
+0

可能重複[控制檯輸出重定向到單獨的程序C#文本框(HTTP://計算器.com/questions/415620/redirect-console-output-to-textbox-in-separate-program-c-sharp) – tenfour

回答

1

可以設置RedirectStandardOutputRedirectStandardErrortrue能夠從標準輸出或錯誤輸出到讀該過程。

然後,您有幾種選擇如何實際讀取數據:

  • 使用StandardOutput財產
  • subsribe到OutputDataReceived事件並調用BeginOutputReadLine()

或爲錯誤流的相應成員。

+0

謝謝 - 這確實是繼續下去的方法。 – XikiryoX

相關問題