2012-05-02 24 views
5

Tengo un proyecto de servicio de Windows simple. He seguido las instrucciones ubicadas en http://msdn.microsoft.com/en-us/library/zt39148a.aspx, que incluyen agregar acciones personalizadas.Servicio de Windows En el Programador de tareas: no se puede iniciar el servicio. El proceso de servicio no se pudo conectar al controlador de servicio

Cuando ejecuto mi compilación en el modo de lanzamiento para el proyecto de instalación. Ejecuto el .msi en el servidor que me gustaría que ejecute el servicio. Cuando abro el Administrador de servicios, aparece el servicio. Incluso puedo iniciar manualmente el servicio y funciona exactamente como lo necesito.

Sin embargo, me gustaría que este servicio se ejecute cada 5 minutos, así que configuré una tarea en el Programador de tareas y señalé el .exe de mi servicio de Windows a la tarea. Sin embargo, cuando el planificador de tareas ejecuta mi servicio de Windows, aparece el siguiente error:

No se puede iniciar el servicio. El proceso de servicio no se pudo conectar al controlador de servicio

Investigué mucho sobre esto pero no he encontrado nada. ¿Alguien tiene alguna idea sobre lo que podría estar causando esto?

+0

¿Qué está poniendo exactamente en el Programador de tareas para comenzar su servicio? – CoreTech

+0

En la pestaña General, hago clic en "Ejecutar si el usuario está conectado o no" y luego marque la casilla que dice "No almacenar contraseña". En la pestaña de disparadores lo configuro para que se ejecute cada 5 minutos En la pestaña de acciones, seleccioné Start A Programme y lo apunto directamente a mi archivo .exe – vcuankit

+0

Como ya ha terminado y comenzó su servicio, wouldn ' ¿Es mejor que use un temporizador dentro de su servicio que un TaskScheduler? Incluso puede establecer un valor de registro que pueda leer y usar como un intervalo que se puede cambiar dinámicamente. Si hay algún registro que desee, puede agregarlo al visor de eventos. –

Respuesta

2

OK, eso no funcionará. No puede ejecutar el exe de su servicio directamente así desde el Programador de tareas. Debería use the "Net start" command para comenzar el servicio.

Asegúrese de marcar la casilla "Ejecutar con los privilegios más altos" en su tarea programada para evitar el UAC si está en Windows Vista o posterior.

+0

Gracias por su respuesta, CoreTech. ¿Puedes por favor elaborar un poco? ¿Dónde debería poner el comando NET START en el programador de tareas? ¿O debería simplemente comenzar el servicio, y si acabo de comenzar el servicio, entonces qué debería colocar en la pestaña Acciones? – vcuankit

+0

En la pestaña Acciones, agregue una nueva acción a "Iniciar un programa" e ingrese "net start [your-service-name]" en el campo "Programa/script". – CoreTech

+0

Cuando hago eso, me da una advertencia preguntándome si estoy usando parámetros. Hago clic NO en eso e intento ejecutarlo. El resultado de la última ejecución dice "El sistema no puede encontrar el archivo especificado". – vcuankit

1

Mi respuesta no se formateó correctamente en los comentarios, así que quería que todos lo supieran en el caso de que se enteraran de esto. Básicamente, acabo de crear un archivo .bat y luego dentro de ese archivo .bat, puse las dos líneas siguientes:

NET START MyServiceName
NET STOP MyServiceName

El comando NET STOP es sincrónico y esperará el servicio para completar antes de detener el servicio.

¡Gracias por la ayuda!

+0

Los servicios de Windows normalmente están diseñados para ejecutarse todo el tiempo.Si desea ejecutar algo cada 5 minutos, escriba una aplicación antigua simple de consola y use el programador de tareas para ejecutarlo cada 5 minutos, o escriba un servicio que se ejecute todo el tiempo y use un temporizador o declaración de suspensión para reactivar cada 5 minutos . comenzar un servicio cada 5 minutos para realizar una tarea específica y luego detenerlo nuevamente no es realmente un buen diseño – Andy

Cuestiones relacionadas