2010-05-07 28 views
7

Estoy tratando de iniciar una aplicación de consola desde un servicio Windows .NET. El servicio se ejecuta en un servidor de Windows 2008.iniciando un proceso desde un servicio Windows .NET

Utilizo Process.Start para ejecutar la aplicación de la consola y se ejecuta (lo puedo ver en el administrador de tareas), pero nunca recupero la identificación del proceso y la llamada a Process.Start simplemente se cuelga. Si ejecuto el mismo servicio desde mi máquina con Windows 7, el proceso se ejecuta y obtengo el Id del proceso de nuevo.

Estoy confundido ..

+4

¿Ha configurado UseShellExecute en falso? ¿Estás redirigiendo su salida? –

Respuesta

1

¿Es posible que el proceso de desove se le está tratando de impulsar la estación de ventana para la entrada del usuario? En ese caso, podría bloquearse ...

¿Qué proceso está iniciando? ¿Es parte de la plataforma/sistema operativo (como cmd.exe) o algo personalizado?

+0

es un proceso personalizado que comienza a escuchar en un puerto tcp específico. Escucha pero no puedo recuperar la identificación del proceso al servicio de Windows que la inició. –

5

Tuve exactamente el mismo problema. Para mí, la clave fue establecer StartInfo.UseShellExecute = false;

0

Después de un largo tiempo de buscar una solución para esto, encontré las piedras sabias para mi problema.

Hice un nuevo programa basado en WindowsForm, con el mismo comando Process.Start, y luego aparece el cuadro de diálogo estándar "Seguridad de advertencia de Windows", y es por eso que funciona.

Después de desactivar el "Control de acceso del usuario", el Servicio de Windows funciona correctamente.

Cuestiones relacionadas