C#-捕获Windows应用程序输出

C#-捕获Windows应用程序输出,c#,.net,windows,C#,.net,Windows,我的应用程序启动“C:\Windows\System32\Msra.Exe”来控制域计算机。是否有一种方法可以捕获此msra.Exe显示的错误消息。(即来自msra.exe的内部错误消息,而不是来自我的应用程序的消息。) 该应用程序本身是一个windows窗体应用程序 感谢您的帮助 启动MSRA的代码如下所示。。。它只是整个应用程序的一个片段 string msra = "C:\\Windows\\System32\\runas.exe"; string domainname = "*****

我的应用程序启动“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");
    }
}
你需要

[更新为指向.net示例]

您需要


[更新以指向.net示例]

您可以将
重定向标准输出
重定向标准错误
设置为
,以便能够读取流程的标准输出或错误输出

然后,您可以选择如何实际读取数据:

  • 使用
    StandardOutput
    属性
  • 订阅
    OutputDataReceived
    事件并调用
    BeginOutputReadLine()

或错误流的相应成员。

您可以将
重定向标准输出
重定向标准错误
设置为
,以便能够读取流程的标准输出或错误输出

然后,您可以选择如何实际读取数据:

  • 使用
    StandardOutput
    属性
  • 订阅
    OutputDataReceived
    事件并调用
    BeginOutputReadLine()

或错误流的相应成员。

您正在使用Process,请尝试Process.StandardError属性。你给它分配了一个流,你就可以使用它了

在这里,您还可以使用Process.StandardOutput


您正在使用Process,请尝试Process.StandardError属性。你给它分配了一个流,你就可以使用它了

在这里,您还可以使用Process.StandardOutput


可能重复的感谢-这确实是前进的道路。感谢-这确实是前进的道路。感谢-这确实是前进的道路。感谢-这确实是前进的道路。感谢-这确实是前进的道路。