2011-10-24 4 views
0

Mon application lance "C: \ Windows \ System32 \ Msra.Exe" pour contrôler un ordinateur de domaine. Est-il possible de capturer les messages d'erreur que cette msra.Exe montre. (Par exemple, les messages d'erreur internes du fichier msra.exe et non ceux de mon application.) L'application elle-même est une application Windows Forms.C# - Capture de la sortie de l'application Windows

Toute aide est appréciée.

Le code pour démarrer MSRA est ci-dessous ... il est juste un extrait de l'application complète.

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

double possible (http [Rediriger sortie de la console dans le programme distinct zone de texte C#]: // stackoverflow .com/questions/415620/redirect-console-sortie-à-textbox-dans-distinct-programme-c-sharp) – tenfour

Répondre

1

Vous pouvez définir RedirectStandardOutput ou RedirectStandardError à true pour pouvoir lire de la sortie de la sortie standard ou erreur de le processus.

Vous avez alors plusieurs options comment lire réellement les données:

  • utilisation StandardOutput propriété
  • abonner à l'événement OutputDataReceived et appelez BeginOutputReadLine()

Ou les membres correspondants pour le flux d'erreur .

+0

Merci - C'est en effet la façon de procéder. – XikiryoX

Questions connexes