ServiceController Osztály

Definíció

Egy Windows szolgáltatást jelöl, amely lehetővé teszi egy futó vagy leállított szolgáltatáshoz való csatlakozást, a módosítást vagy az információk lekérését.

public ref class ServiceController : System::ComponentModel::Component
public class ServiceController : System.ComponentModel.Component
[System.ServiceProcess.ServiceProcessDescription("ServiceControllerDesc")]
public class ServiceController : System.ComponentModel.Component
type ServiceController = class
    inherit Component
[<System.ServiceProcess.ServiceProcessDescription("ServiceControllerDesc")>]
type ServiceController = class
    inherit Component
Public Class ServiceController
Inherits Component
Öröklődés
ServiceController
Attribútumok

Példák

Az alábbi példa bemutatja, hogy az ServiceController osztály használatával szabályozható a SimpleService szolgáltatás példája.

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
Imports System.ServiceProcess
Imports System.Diagnostics
Imports System.Threading



Class Program

    Public Enum SimpleServiceCustomCommands
        StopWorker = 128
        RestartWorker
        CheckWorker
    End Enum 'SimpleServiceCustomCommands

    Shared Sub Main(ByVal args() As String)
        Dim scServices() As ServiceController
        scServices = ServiceController.GetServices()

        Dim scTemp As ServiceController
        For Each scTemp In scServices

            If scTemp.ServiceName = "Simple Service" Then
                ' Display properties for the Simple Service sample 
                ' from the ServiceBase example
                Dim sc As New ServiceController("Simple Service")
                Console.WriteLine("Status = " + sc.Status.ToString())
                Console.WriteLine("Can Pause and Continue = " + _
                    sc.CanPauseAndContinue.ToString())
                Console.WriteLine("Can ShutDown = " + sc.CanShutdown.ToString())
                Console.WriteLine("Can Stop = " + sc.CanStop.ToString())
                If sc.Status = ServiceControllerStatus.Stopped Then
                    sc.Start()
                    While sc.Status = ServiceControllerStatus.Stopped
                        Thread.Sleep(1000)
                        sc.Refresh()
                    End While
                End If
                ' Issue custom commands to the service
                ' enum SimpleServiceCustomCommands 
                '    { StopWorker = 128, RestartWorker, CheckWorker };
                sc.ExecuteCommand(Fix(SimpleServiceCustomCommands.StopWorker))
                sc.ExecuteCommand(Fix(SimpleServiceCustomCommands.RestartWorker))
                sc.Pause()
                While sc.Status <> ServiceControllerStatus.Paused
                    Thread.Sleep(1000)
                    sc.Refresh()
                End While
                Console.WriteLine("Status = " + sc.Status.ToString())
                sc.Continue()
                While sc.Status = ServiceControllerStatus.Paused
                    Thread.Sleep(1000)
                    sc.Refresh()
                End While
                Console.WriteLine("Status = " + sc.Status.ToString())
                sc.Stop()
                While sc.Status <> ServiceControllerStatus.Stopped
                    Thread.Sleep(1000)
                    sc.Refresh()
                End While
                Console.WriteLine("Status = " + sc.Status.ToString())
                Dim argArray() As String = {"ServiceController arg1", "ServiceController arg2"}
                sc.Start(argArray)
                While sc.Status = ServiceControllerStatus.Stopped
                    Thread.Sleep(1000)
                    sc.Refresh()
                End While
                Console.WriteLine("Status = " + sc.Status.ToString())
                ' Display the event log entries for the custom commands
                ' and the start arguments.
                Dim el As New EventLog("Application")
                Dim elec As EventLogEntryCollection = el.Entries
                Dim ele As EventLogEntry
                For Each ele In elec
                    If ele.Source.IndexOf("SimpleService.OnCustomCommand") >= 0 Or ele.Source.IndexOf("SimpleService.Arguments") >= 0 Then
                        Console.WriteLine(ele.Message)
                    End If
                Next ele
            End If
        Next scTemp

    End Sub
End Class
' 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

Megjegyzések

Az ServiceController osztály használatával csatlakozhat a meglévő szolgáltatásokhoz, és szabályozhatja a meglévő szolgáltatások viselkedését. A ServiceController osztály egy példányának létrehozásakor meg kell adnia annak tulajdonságait, hogy az egy adott Windows szolgáltatással működjön együtt. Ezután az osztály használatával elindíthatja, leállíthatja és egyéb módon módosíthatja a szolgáltatást.

Az összetevőt valószínűleg rendszergazdai kapacitásban fogja használni ServiceController . Létrehozhat például egy Windows vagy webalkalmazást, amely egyéni parancsokat küld egy szolgáltatásnak a ServiceController példányon keresztül. Ez hasznos lehet, mert a Service Control Manager (SCM) Microsoft Management Console beépülő modul nem támogatja az egyéni parancsokat.

Miután létrehozott egy példányt ServiceController, két tulajdonságot kell beállítania rajta, hogy azonosítsa azt a szolgáltatást, amellyel interakcióba lép: a számítógép nevét és a vezérelni kívánt szolgáltatás nevét.

Note

Alapértelmezés szerint MachineName a helyi számítógépre van állítva, ezért csak akkor kell módosítania, ha a példányt egy másik számítógépre szeretné állítani.

A szolgáltatás szerzője általában olyan kódot ír, amely testre szabja az adott parancshoz társított műveletet. Egy szolgáltatás tartalmazhat például egy parancsra ServiceBase.OnPause válaszoló kódot. Ebben az esetben a feladat egyéni feldolgozása lefut, Pause mielőtt a rendszer szünetelteti a szolgáltatást.

A szolgáltatás által feldolgozható parancsok halmaza a tulajdonságaitól függ; például beállíthatja a CanStop szolgáltatás tulajdonságát false. Ez a beállítás elérhetetlenné teszi a Stop parancsot az adott szolgáltatásban; megakadályozza a szolgáltatás SCM-ből való leállítását a szükséges gomb letiltásával. Ha megpróbálja leállítani a szolgáltatást a kódból, a rendszer hibát jelez, és megjeleníti a "Nem sikerült leállni servicename" hibaüzenetet.

Konstruktorok

Name Description
ServiceController()

Inicializálja az ServiceController osztály egy új példányát, amely nincs hozzárendelve egy adott szolgáltatáshoz.

ServiceController(String, String)

Inicializálja az ServiceController osztály új példányát, amely a megadott számítógépen lévő meglévő szolgáltatáshoz van társítva.

ServiceController(String)

Inicializálja az ServiceController osztály új példányát, amely a helyi számítógépen lévő meglévő szolgáltatáshoz van társítva.

Tulajdonságok

Name Description
CanPauseAndContinue

Beolvas egy értéket, amely jelzi, hogy a szolgáltatás szüneteltethető-e és folytatható-e.

CanRaiseEvents

Beolvas egy értéket, amely jelzi, hogy az összetevő képes-e eseményt létrehozni.

(Öröklődés forrása Component)
CanShutdown

Egy értéket kap, amely jelzi, hogy a szolgáltatás értesítést kapjon-e a rendszer leállásakor.

CanStop

Beolvas egy értéket, amely jelzi, hogy a szolgáltatás leállítható-e az elindítása után.

Container

Lekéri a IContainer .Component

(Öröklődés forrása Component)
DependentServices

Lekéri a példányhoz ServiceController társított szolgáltatástól függő szolgáltatások készletét.

DesignMode

Olyan értéket kap, amely jelzi, hogy az Component aktuálisan tervezési módban van-e.

(Öröklődés forrása Component)
DisplayName

Lekéri vagy beállítja a szolgáltatás rövid nevét.

Events

Lekéri az ehhez Componentcsatolt eseménykezelők listáját.

(Öröklődés forrása Component)
MachineName

Lekéri vagy beállítja annak a számítógépnek a nevét, amelyen a szolgáltatás található.

ServiceHandle

Lekéri a szolgáltatás fogópontját.

ServiceName

Lekéri vagy beállítja a példány által hivatkozott szolgáltatást azonosító nevet.

ServicesDependedOn

A szolgáltatás által nyújtott szolgáltatások készlete.

ServiceType

Lekéri az objektum által hivatkozott szolgáltatás típusát.

Site

Lekéri vagy megadja a ISite értékét a Component-hez.

(Öröklődés forrása Component)
StartType

Lekéri az objektum által ServiceController képviselt szolgáltatás indítását jelző értéket.

Status

Lekéri a példány által hivatkozott szolgáltatás állapotát.

Metódusok

Name Description
Close()

Leválasztja a ServiceController példányt a szolgáltatásról, és felszabadítja a példány által lefoglalt összes erőforrást.

Continue()

A szolgáltatás szüneteltetése után is folytatódik.

CreateObjRef(Type)

Létrehoz egy objektumot, amely tartalmazza a távoli objektumokkal való kommunikációhoz használt proxy létrehozásához szükséges összes releváns információt.

(Öröklődés forrása MarshalByRefObject)
Dispose()

Felszabadítja a .-hez használt összes erőforrást Component.

(Öröklődés forrása Component)
Dispose(Boolean)

Felszabadítja a felügyelt erőforrások által ServiceController használt nem felügyelt erőforrásokat, és opcionálisan felszabadítja a felügyelt erőforrásokat.

Equals(Object)

Meghatározza, hogy a megadott objektum egyenlő-e az aktuális objektummal.

(Öröklődés forrása Object)
ExecuteCommand(Int32)

Végrehajt egy egyéni parancsot a szolgáltatáson.

GetDevices()

Lekéri az eszközillesztő-szolgáltatásokat a helyi számítógépen.

GetDevices(String)

Lekéri az eszközillesztő-szolgáltatásokat a megadott számítógépen.

GetHashCode()

Ez az alapértelmezett kivonatoló függvény.

(Öröklődés forrása Object)
GetLifetimeService()

Lekéri a példány élettartamszabályzatát vezérlő aktuális élettartam-szolgáltatásobjektumot.

(Öröklődés forrása MarshalByRefObject)
GetService(Type)

Olyan objektumot ad vissza, amely az általa vagy annak által ComponentContainernyújtott szolgáltatást jelöli.

(Öröklődés forrása Component)
GetServices()

Lekéri a helyi számítógépen található összes szolgáltatást, kivéve az eszközillesztő-szolgáltatásokat.

GetServices(String)

Lekéri a megadott számítógépen található összes szolgáltatást, kivéve az eszközillesztő-szolgáltatásokat.

GetType()

Lekéri az Type aktuális példányt.

(Öröklődés forrása Object)
InitializeLifetimeService()

Beolvas egy élettartam-szolgáltatásobjektumot a példány élettartam-szabályzatának szabályozásához.

(Öröklődés forrása MarshalByRefObject)
MemberwiseClone()

Az aktuális Objectpéldány sekély másolatát hozza létre.

(Öröklődés forrása Object)
MemberwiseClone(Boolean)

Az aktuális MarshalByRefObject objektum sekély másolatát hozza létre.

(Öröklődés forrása MarshalByRefObject)
Pause()

Felfüggeszti egy szolgáltatás működését.

Refresh()

A tulajdonságértékek frissítéséhez állítsa vissza a tulajdonságokat az aktuális értékükre.

Start()

Elindítja a szolgáltatást, és nem ad át argumentumokat.

Start(String[])

Elindít egy szolgáltatást, átadva a megadott argumentumokat.

Stop()

Leállítja ezt a szolgáltatást és a szolgáltatástól függő összes szolgáltatást.

ToString()

String A ( ha van) nevet tartalmazó értéket Componentad vissza. Ezt a módszert nem szabad felülírni.

(Öröklődés forrása Component)
WaitForStatus(ServiceControllerStatus, TimeSpan)

Megvárja, amíg a szolgáltatás eléri a megadott állapotot, vagy hogy a megadott időtúllépés lejárjon.

WaitForStatus(ServiceControllerStatus)

Végtelenül megvárja, amíg a szolgáltatás eléri a megadott állapotot.

esemény

Name Description
Disposed

Akkor fordul elő, ha az összetevőt a metódus hívása megsemmisíti Dispose() .

(Öröklődés forrása Component)

A következőre érvényes:

Lásd még