Se puede utilizar la clase ServiceController para conectarse y controlar el comportamiento de los servicios existentes. Al crear una instancia de la clase ServiceController, se pueden establecer las propiedades correspondientes de forma que interactúen con un servicio de Windows específico. De esta manera, se puede utilizar la clase para iniciar, detener o manipular el servicio.
Probablemente, se utilizará el componente ServiceController para tareas administrativas. Por ejemplo, se puede crear una aplicación para Windows o una aplicación Web que envíe los comandos personalizados a un servicio a través de la instancia de ServiceController. Esto podría resultar de utilidad, porque el complemento Microsoft Management Console del Administrador de control de servicios (SCM, Service Control Manager) no admite comandos personalizados.
Después de crear una instancia de ServiceController, se deben establecer dos propiedades en ella para identificar el servicio con el que interactúa: el nombre del equipo y el nombre del servicio que se desea controlar.
Nota |
|---|
| De forma predeterminada, la propiedad MachineName se establece en el equipo local, de forma que no sea necesario cambiarla a menos que se desee establecer que la instancia apunte a otro equipo. |
Normalmente, el autor del servicio escribe el código que personaliza la acción asociada a un comando específico. Por ejemplo, un servicio puede contener código para responder a un comando ServiceBase.OnPause. En tal caso, el procesamiento personalizado de la tarea Pause se ejecuta antes de que el sistema pause el servicio.
El conjunto de comandos que un servicio puede procesar depende de sus propiedades, por ejemplo, se puede establecer la propiedad CanStop en false para un servicio. Este valor representa el comando Stop no disponible en ese servicio concreto; impide que se detenga el servicio del SCM al deshabilitar el botón necesario. Si se intenta detener el servicio desde el código, el sistema provoca un error y muestra el mensaje de error "Error al detener servicename".