El servicio se cuelga en WaitForExit después de llamar al archivo por lotes
Tengo un servicio que a veces llama un archivo por lotes. El archivo por lotes tarda 5-10 segundos en ejecutarse:
System.Diagnostics.Process proc = new System.Diagnostics.Process(); // Declare New Process
proc.StartInfo.FileName = fileName;
proc.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
proc.StartInfo.CreateNoWindow = true;
proc.Start();
proc.WaitForExit();
El archivo existe y el código funciona cuando ejecuto el mismo código en la consola. Sin embargo, cuando se ejecuta dentro del servicio, cuelga enWaitForExit()
. Tengo que eliminar el archivo por lotes del Proceso para continuar. (Estoy seguro de que el archivo existe, ya que puedo verlo en la lista de procesos).
¿Cómo puedo solucionar este problema?
Actualización n. ° 1:El código de Kevin me permite obtener resultados. Uno de mis archivos por lotes todavía está colgado.
"C: \ EnterpriseDB \ Postgres \ 8.3 \ bin \ pg_dump.exe" -i -h localhost -p 5432 -U postgres -F p -a -D -v -f "c: \ backupcasecocher \ backupdateevent2008.sql" -t "\" public \ ". \" dateevent \ "" "DbTest"
El otro archivo por lotes es:
"C: \ EnterpriseDB \ Postgres \ 8.3 \ bin \ vacuumdb.exe" -U postgres -d DbTest
He comprobado el camino y elpostgresql
El camino está bien. El directorio de salida existe y aún funciona fuera del servicio. ¿Algunas ideas?
En lugar de la ruta del archivo por lotes, escribí "C: \ EnterpriseDB \ Postgres \ 8.3 \ bin \ pg_dump.exe" para elproc.StartInfo.FileName
y agregó todos los parámetros aproc.StartInfo.Arguments
. Los resultados no han cambiado, pero veo elpg_dump.exe
en la ventana del proceso. Nuevamente, esto solo ocurre dentro del servicio.
Ejecuté el servicio con un usuario en el grupo de administradores, pero fue en vano. Yo restaurenull
para el nombre de usuario y contraseña del servicio
Creé un servicio simple para escribir un seguimiento en el registro de eventos y ejecutar un archivo por lotes que contiene "dir". Ahora colgará enproc.Start();
- Intenté cambiar la cuenta de LocalSystem aUsuario y configuré el usuario administrador y la contraseña, todavía nada.