我的应用程序启动“C:\ Windows \ System32 \ Msra.Exe”来控制域计算机。 有没有一种方法可以捕获这个msra.Exe显示的错误消息。 (即从msra.exe的内部错误消息,而不是从我的应用程序。)该应用程序本身是一个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"); } }
您可以将RedirectStandardOutput
或RedirectStandardError
设置为true
,以便能够从流程的标准输出或错误输出读取。
然后你有几个选择如何实际读取数据:
StandardOutput
属性 OutputDataReceived
事件并调用BeginOutputReadLine()
或者错误流的相应成员。
您需要http://msdn.microsoft.com/zh-CN/library/system.diagnostics.process.standardoutput.aspx
[更新为指向.net示例]
您正在使用Process,请尝试Process.StandardError属性。 你分配一个流,你将能够使用它。
http://msdn.microsoft.com/en-us/library/system.diagnostics.process.standarderror.aspx
而当你在那里,你也可以使用Process.StandardOutput
http://msdn.microsoft.com/en-us/library/system.diagnostics.process.standardoutput.aspx