Estoy ejecutando una aplicación de consola (myApp.exe) que genera una cadena pseudo localizada (unicode) en la salida estándar. Si ejecuto esto en un símbolo del sistema normal (cmd.exe), los datos Unicode se pierden. Si ejecuto esto en un símbolo del sistema Unicode (cmd.exe/u) o establezco las propiedades de la consola en "Consola Lucida", se mantiene la cadena Unicode.Reorientando ConsoleOutput que contiene cadenas pseudo-loc (unicode) en C#
Me gustaría ejecutar esta aplicación en C# y redirigir la cadena Unicode en una variable local. Estoy usando un objeto Process con RedirectStandardOutput = true, pero la cadena Unicode siempre se pierde.
¿Cómo puedo especificar que se mantenga esta información Unicode?
private static int RunDISM(string Args, out string ConsoleOutput)
{
Process process = new Process();
process.StartInfo.FileName = "myApp.exe";
process.StartInfo.Arguments = Args;
try
{
process.StartInfo.CreateNoWindow = true;
process.StartInfo.UseShellExecute = false;
process.StartInfo.RedirectStandardOutput = true;
process.StartInfo.WorkingDirectory = Environment.CurrentDirectory;
process.Start();
process.WaitForExit(Int32.MaxValue);
}
catch (Exception e)
{
WEX.Logging.Interop.Log.Assert("Failure while starting or running process.\nERROR: " + e.Message);
ConsoleOutput = null;
return EXITCODE_ERROR;
}
ConsoleOutput = process.StandardOutput.ReadToEnd();
return process.ExitCode;
}
¿Puede proporcionarnos más detalles sobre el contenido de Unicode que está tratando de obtener de myApp.exe, particularmente una cadena de muestra que no se procesa correctamente? Eso podría ayudarnos a llegar a una solución de trabajo. – Charlie
En otra nota: debe llamar a ReadToEnd() ANTES de WaitToExit(). Ver: http://msdn.microsoft.com/en-us/library/system.diagnostics.process.standardoutput.aspx – Ben