Pregunta Ocultar la ventana de consola desde Process.Start C #


Estoy intentando crear un proceso en una máquina remota usando System.Diagnostics.Process class. Puedo crear un proceso. Pero el problema es que la creación de un servicio lleva mucho tiempo y se muestra la ventana de la consola. Otra cosa molesta es que la ventana de la consola se muestra en la parte superior de mi formulario de Windows y no puedo hacer ninguna otra operación en ese formulario. He configurado todas las propiedades como CreateNoWindow = true,

proc.StartInfo.WindowStyle = ProcessWindowStyle.Hidden

pero aún muestra la ventana de la consola. incluso he redirigido la salida y los errores a la secuencia separada, pero no tuve suerte.

¿Hay alguna otra forma de ocultar la ventana de la consola? Por favor, ayúdame .

Aquí está la parte de mi código que utilicé para ejecutar el comando sc.

Process proc = new Process();
proc.StartInfo.UseShellExecute = false;
proc.StartInfo.CreateNoWindow = true;
proc.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
proc.StartInfo.FileName = "sc";
proc.StartInfo.Arguments = string.Format(@"\\SYS25 create MySvc binPath= C:\mysvc.exe");
proc.StartInfo.RedirectStandardError = false;
proc.StartInfo.RedirectStandardOutput = false;
proc.StartInfo.UseShellExecute = false;
proc.StartInfo.CreateNoWindow = true;
proc.Start();
proc.WaitForExit();

74
2018-03-21 12:14


origen


Respuestas:


Tuve un problema similar al intentar iniciar un proceso sin mostrar la ventana de la consola. Probé con varias combinaciones diferentes de valores de propiedad hasta que encontré uno que exhibía el comportamiento que quería.

Aquí hay una página que detalla por qué UseShellExecute la propiedad debe establecerse en falso.
http://msdn.microsoft.com/en-us/library/system.diagnostics.processstartinfo.createnowindow.aspx 

En la sección Comentarios en la página:

Si la propiedad UseShellExecute es verdadera o el nombre de usuario y   Las propiedades de contraseña no son nulas, la propiedad CreateNoWindow   el valor se ignora y se crea una nueva ventana.

ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.FileName = fullPath;
startInfo.Arguments = args;
startInfo.RedirectStandardOutput = true;
startInfo.RedirectStandardError = true;
startInfo.UseShellExecute = false;
startInfo.CreateNoWindow = true;

Process processTemp = new Process();
processTemp.StartInfo = startInfo;
processTemp.EnableRaisingEvents = true;
try
{
    processTemp.Start();
}
catch (Exception e)
{
    throw;
}

89
2018-02-08 03:01



He tenido mala suerte con esta respuesta, con el proceso (Wix light.exe) esencialmente saliendo a almorzar y no llegando a casa a tiempo para la cena. Sin embargo, lo siguiente funcionó bien para mí:

Process p = new Process();
p.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
// etc, then start process

41
2017-07-09 21:31



Esto debería funcionar, intente;


Agregue una referencia del sistema.

using System.Diagnostics;

Luego use este código para ejecutar su comando en una ventana CMD oculta.

Process cmd = new Process();
cmd.StartInfo.FileName = "cmd.exe";
cmd.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
cmd.StartInfo.Arguments = "Enter your command here";
cmd.Start();

12
2017-10-10 16:19



Esto no muestra la ventana:

Process cmd = new Process();
cmd.StartInfo.FileName = "cmd.exe";
cmd.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
cmd.StartInfo.CreateNoWindow = true;

...
cmd.Start();

0
2018-06-21 11:00