c# -捕获Windows应用程序输出
本文关键字:应用程序 输出 Windows 捕获 | 更新日期: 2023-09-27 18:12:07
我的应用程序启动"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/en-us/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