Exportar (0) Imprimir
Expandir todo
Este artículo proviene de un motor de traducción automática. Mueva el puntero sobre las frases del artículo para ver el texto original. Más información.
Traducción
Original

ServiceController (Clase)

Representa a un servicio de Windows y permite conectarse a un servicio en ejecución o detenido, manipularlo u obtener información acerca del mismo.

System.Object
  System.MarshalByRefObject
    System.ComponentModel.Component
      System.ServiceProcess.ServiceController

Espacio de nombres:  System.ServiceProcess
Ensamblado:  System.ServiceProcess (en System.ServiceProcess.dll)

[ServiceProcessDescriptionAttribute("ServiceControllerDesc")]
public class ServiceController : Component

El tipo ServiceController expone los siguientes miembros.

  NombreDescripción
Método públicoServiceController()Inicializa una nueva instancia de la clase ServiceController que no está asociada a un servicio determinado.
Método públicoServiceController(String)Inicializa una nueva instancia de la clase ServiceController que está asociada a un servicio existente en el equipo local.
Método públicoServiceController(String, String)Inicializa una nueva instancia de la clase ServiceController que está asociada a un servicio existente en el equipo especificado.
Arriba

  NombreDescripción
Propiedad públicaCanPauseAndContinueObtiene un valor que indica si se puede pausar y reanudar el servicio.
Propiedad protegidaCanRaiseEventsObtiene un valor que indica si el componente puede generar un evento. (Se hereda de Component).
Propiedad públicaCanShutdownObtiene un valor que indica si se debe notificar al servicio cuando se está cerrando el sistema.
Propiedad públicaCanStopObtiene un valor que indica si el servicio puede detenerse después de haberse iniciado.
Propiedad públicaContainerObtiene IContainer que contiene Component. (Se hereda de Component).
Propiedad públicaDependentServicesObtiene el conjunto de servicios que depende del servicio asociado a esta instancia ServiceController.
Propiedad protegidaDesignModeObtiene un valor que indica si Component está actualmente en modo de diseño. (Se hereda de Component).
Propiedad públicaDisplayNameObtiene o establece un nombre descriptivo para el servicio.
Propiedad protegidaEventsObtiene la lista de controladores de eventos asociados a Component. (Se hereda de Component).
Propiedad públicaMachineNameObtiene o establece el nombre del equipo en el que reside el servicio.
Propiedad públicaServiceHandleObtiene el identificador del servicio.
Propiedad públicaServiceNameObtiene o establece el nombre que identifica el servicio al que hace referencia esta instancia.
Propiedad públicaServicesDependedOnConjunto de servicios de los que depende este servicio.
Propiedad públicaServiceTypeObtiene el tipo de servicio al que hace referencia este objeto.
Propiedad públicaSiteObtiene o establece ISite de Component. (Se hereda de Component).
Propiedad públicaStatusObtiene el estado del servicio al que hace referencia esta instancia.
Arriba

  NombreDescripción
Método públicoCloseDesconecta esta instancia de ServiceController desde el servicio y libera todos los recursos que asignó la instancia.
Método públicoContinueReanuda un servicio después de que se haya dejado en pausa.
Método públicoCreateObjRefCrea un objeto que contiene toda la información relevante necesaria para generar un proxy utilizado para comunicarse con un objeto remoto. (Se hereda de MarshalByRefObject).
Método públicoDispose()Libera todos los recursos utilizados por Component. (Se hereda de Component).
Método protegidoDispose(Boolean)Libera los recursos no administrados que utiliza ServiceController y libera los recursos administrados de forma opcional. (Invalida a Component.Dispose(Boolean)).
Método públicoEquals(Object)Determina si el objeto especificado es igual al objeto actual. (Se hereda de Object).
Método públicoExecuteCommandEjecuta un comando personalizado en el servicio.
Método protegidoFinalizeLibera recursos no administrados y realiza otras operaciones de limpieza antes de que se reclame el objeto Component durante la recolección de elementos no utilizados. (Se hereda de Component).
Método públicoMiembro estáticoGetDevices()Recupera los servicios del controlador de dispositivos en el equipo local.
Método públicoMiembro estáticoGetDevices(String)Recupera los servicios del controlador de dispositivos en el equipo especificado.
Método públicoGetHashCode Sirve como una función hash para un tipo en particular. (Se hereda de Object).
Método públicoGetLifetimeServiceRecupera el objeto de servicio de duración actual que controla la directiva de duración de esta instancia. (Se hereda de MarshalByRefObject).
Método protegidoGetServiceDevuelve un objeto que representa el servicio suministrado por Component o por Container. (Se hereda de Component).
Método públicoMiembro estáticoGetServices()Recupera todos los servicios del equipo local, excepto los servicios de controlador de dispositivos.
Método públicoMiembro estáticoGetServices(String)Recupera todos los servicios del equipo especificado, excepto los servicios de controlador de dispositivos.
Método públicoGetType Obtiene el Type de la instancia actual. (Se hereda de Object).
Método públicoInitializeLifetimeServiceObtiene un objeto de servicio de duración para controlar la directiva de duración de esta instancia. (Se hereda de MarshalByRefObject).
Método protegidoMemberwiseClone() Crea una copia superficial del Object actual. (Se hereda de Object).
Método protegidoMemberwiseClone(Boolean)Crea una copia superficial del objeto MarshalByRefObject actual. (Se hereda de MarshalByRefObject).
Método públicoPauseSuspende la operación de un servicio.
Método públicoRefreshActualiza los valores de propiedades restableciéndolas en sus valores actuales.
Método públicoStart()Inicia el servicio sin pasar argumentos.
Método públicoStart(String[])Inicia un servicio pasando los argumentos especificados.
Método públicoStopDetiene este servicio y todos los servicios que sean dependientes en este servicio.
Método públicoToStringDevuelve un objeto String que contiene el nombre del objeto Component, en caso de que exista. Este método no debe reemplazarse. (Se hereda de Component).
Método públicoWaitForStatus(ServiceControllerStatus)No actúa hasta que el servicio alcanza el estado especificado.
Método públicoWaitForStatus(ServiceControllerStatus, TimeSpan)Espera a que el servicio alcance el estado especificado o a que expire el tiempo de espera especificado.
Arriba

  NombreDescripción
Evento públicoDisposedSe produce cuando el componente se elimina mediante una llamada al método Dispose. (Se hereda de Component).
Arriba

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. A continuación, podrá utilizar la clase para iniciar el servicio, detenerlo y manipularlo de cualquier otra forma.

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, deberá establecer en ella dos propiedades para identificar el servicio con el que interactúa: el nombre del equipo y el nombre del servicio que desea controlar.

NotaNota

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 que responda 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".

En el ejemplo siguiente se muestra el uso de la clase ServiceController para controlar el ejemplo del servicio SimpleService.


using System;
using System.ServiceProcess;
using System.Diagnostics;
using System.Threading;

namespace ServiceControllerSample
{
    class Program
    {
        public enum SimpleServiceCustomCommands
        { StopWorker = 128, RestartWorker, CheckWorker };
        static void Main(string[] args)
        {
            ServiceController[] scServices;
            scServices = ServiceController.GetServices();

            foreach (ServiceController scTemp in scServices)
            {

                if (scTemp.ServiceName == "Simple Service")
                {
                    // Display properties for the Simple Service sample
                    // from the ServiceBase example.
                    ServiceController sc = new ServiceController("Simple Service");
                    Console.WriteLine("Status = " + sc.Status);
                    Console.WriteLine("Can Pause and Continue = " + sc.CanPauseAndContinue);
                    Console.WriteLine("Can ShutDown = " + sc.CanShutdown);
                    Console.WriteLine("Can Stop = " + sc.CanStop);
                    if (sc.Status == ServiceControllerStatus.Stopped)
                    {
                        sc.Start();
                        while (sc.Status == ServiceControllerStatus.Stopped)
                        {
                            Thread.Sleep(1000);
                            sc.Refresh();
                        }
                    }
                    // Issue custom commands to the service
                    // enum SimpleServiceCustomCommands 
                    //    { StopWorker = 128, RestartWorker, CheckWorker };
                    sc.ExecuteCommand((int)SimpleServiceCustomCommands.StopWorker);
                    sc.ExecuteCommand((int)SimpleServiceCustomCommands.RestartWorker);
                    sc.Pause();
                    while (sc.Status != ServiceControllerStatus.Paused)
                    {
                        Thread.Sleep(1000);
                        sc.Refresh();
                    }
                    Console.WriteLine("Status = " + sc.Status);
                    sc.Continue();
                    while (sc.Status == ServiceControllerStatus.Paused)
                    {
                        Thread.Sleep(1000);
                        sc.Refresh();
                    }
                    Console.WriteLine("Status = " + sc.Status);
                    sc.Stop();
                    while (sc.Status != ServiceControllerStatus.Stopped)
                    {
                        Thread.Sleep(1000);
                        sc.Refresh();
                    }
                    Console.WriteLine("Status = " + sc.Status);
                    String[] argArray = new string[] { "ServiceController arg1", "ServiceController arg2" };
                    sc.Start(argArray);
                    while (sc.Status == ServiceControllerStatus.Stopped)
                    {
                        Thread.Sleep(1000);
                        sc.Refresh();
                    }
                    Console.WriteLine("Status = " + sc.Status);
                    // Display the event log entries for the custom commands
                    // and the start arguments.
                    EventLog el = new EventLog("Application");
                    EventLogEntryCollection elec = el.Entries;
                    foreach (EventLogEntry ele in elec)
                    {
                        if (ele.Source.IndexOf("SimpleService.OnCustomCommand") >= 0 |
                            ele.Source.IndexOf("SimpleService.Arguments") >= 0)
                            Console.WriteLine(ele.Message);
                    }
                }
            }


        }
    }
}
// This sample displays the following output if the Simple Service
// sample is running:
//Status = Running
//Can Pause and Continue = True
//Can ShutDown = True
//Can Stop = True
//Status = Paused
//Status = Running
//Status = Stopped
//Status = Running
//4:14:49 PM - Custom command received: 128
//4:14:49 PM - Custom command received: 129
//ServiceController arg1
//ServiceController arg2


.NET Framework

Compatible con: 4.5.2, 4.5.1, 4.5, 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Compatible con: 4, 3.5 SP1

Windows Phone 8.1, Windows Phone 8, Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (no se admite el rol Server Core), Windows Server 2008 R2 (se admite el rol Server Core con SP1 o versiones posteriores; no se admite Itanium)

.NET Framework no admite todas las versiones de todas las plataformas. Para obtener una lista de las versiones compatibles, vea Requisitos de sistema de .NET Framework.

Todos los miembros static (Shared en Visual Basic) públicos de este tipo son seguros para la ejecución de subprocesos. No se garantiza que los miembros de instancias sean seguros para la ejecución de subprocesos.

Adiciones de comunidad

AGREGAR
Mostrar:
© 2015 Microsoft