ServiceController Sınıf

Tanım

Bir Windows hizmetini temsil eder ve çalışan veya durdurulmuş bir hizmete bağlanmanızı, bunu işlemenizi veya onunla ilgili bilgi almanızı sağlar.Represents a Windows service and allows you to connect to a running or stopped service, manipulate it, or get information about it.

public ref class ServiceController : System::ComponentModel::Component
public ref class ServiceController : IDisposable
public class ServiceController : System.ComponentModel.Component
public class ServiceController : IDisposable
[System.ServiceProcess.ServiceProcessDescription("ServiceControllerDesc")]
public class ServiceController : System.ComponentModel.Component
type ServiceController = class
    inherit Component
type ServiceController = class
    interface IDisposable
[<System.ServiceProcess.ServiceProcessDescription("ServiceControllerDesc")>]
type ServiceController = class
    inherit Component
Public Class ServiceController
Inherits Component
Public Class ServiceController
Implements IDisposable
Devralma
ServiceController
Devralma
ServiceController
Öznitelikler
Uygulamalar

Örnekler

Aşağıdaki örnek, ServiceController hizmet örneğini denetlemek için sınıfının kullanımını gösterir SimpleService .The following example demonstrates the use of the ServiceController class to control the SimpleService service example.

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

Açıklamalar

ServiceControllerSınıfını kullanarak var olan hizmetlerin davranışını denetleyebilir ve denetleyebilirsiniz.You can use the ServiceController class to connect to and control the behavior of existing services. Sınıfının bir örneğini oluşturduğunuzda ServiceController , özelliklerini belirli bir Windows hizmeti ile etkileşim kurmak için ayarlarsınız.When you create an instance of the ServiceController class, you set its properties so it interacts with a specific Windows service. Daha sonra hizmeti başlatmak, durdurmak ve başka bir şekilde değiştirmek için sınıfını kullanabilirsiniz.You can then use the class to start, stop, and otherwise manipulate the service.

Büyük olasılıkla ServiceController bileşeni bir yönetim kapasitesinde kullancaksınız.You will most likely use the ServiceController component in an administrative capacity. Örneğin, örnek aracılığıyla bir hizmete özel komutlar gönderen bir Windows veya Web uygulaması oluşturabilirsiniz ServiceController .For example, you could create a Windows or Web application that sends custom commands to a service through the ServiceController instance. Hizmet Denetim Yöneticisi (SCM) Microsoft Yönetim Konsolu ek bileşeni özel komutları desteklemediğinden bu faydalı olabilir.This would be useful, because the Service Control Manager (SCM) Microsoft Management Console snap-in does not support custom commands.

Bir örneğini oluşturduktan sonra ServiceController , üzerinde iki özellik ayarlamanız gerekir: bilgisayar adı ve denetlemek istediğiniz hizmetin adı...After you create an instance of ServiceController, you must set two properties on it to identify the service with which it interacts: the computer name and the name of the service you want to control.

Not

Varsayılan olarak, MachineName yerel bilgisayara ayarlanır, bu nedenle örneği başka bir bilgisayara işaret etmek üzere ayarlamak istemediğiniz müddetçe değiştirmeniz gerekmez.By default, MachineName is set to the local computer, so you do not need to change it unless you want to set the instance to point to another computer.

Genellikle, hizmet yazarı belirli bir komutla ilişkili eylemi özelleştiren kodu yazar.Generally, the service author writes code that customizes the action associated with a specific command. Örneğin, bir hizmet, bir komuta yanıt vermek için kod içerebilir ServiceBase.OnPause .For example, a service can contain code to respond to an ServiceBase.OnPause command. Bu durumda, görev için özel işleme, Pause sistem hizmeti duraklatmadan önce çalışır.In that case, the custom processing for the Pause task runs before the system pauses the service.

Bir hizmetin işleyebir hizmet kümesi, özelliklerine bağlıdır; Örneğin, CanStop bir hizmetin özelliğini olarak ayarlayabilirsiniz false .The set of commands a service can process depends on its properties; for example, you can set the CanStop property for a service to false. Bu ayar, Stop söz konusu hizmette kullanılamayan komutu işler; gerekli düğmeyi devre dışı bırakarak HIZMETI SCM 'den durdurmayı önler.This setting renders the Stop command unavailable on that particular service; it prevents you from stopping the service from the SCM by disabling the necessary button. Hizmeti kodunuzda durdurmayı denerseniz, sistem bir hata oluşturur ve "durdurulamadı" hata mesajını görüntüler servicename .If you try to stop the service from your code, the system raises an error and displays the error message "Failed to stop servicename."

Oluşturucular

ServiceController()

ServiceControllerSınıfının belirli bir hizmetle ilişkilendirilmemiş yeni bir örneğini başlatır.Initializes a new instance of the ServiceController class that is not associated with a specific service.

ServiceController(String)

ServiceControllerYerel bilgisayarda var olan bir hizmetle ilişkili sınıfının yeni bir örneğini başlatır.Initializes a new instance of the ServiceController class that is associated with an existing service on the local computer.

ServiceController(String, String)

ServiceControllerBelirtilen bilgisayarda var olan bir hizmetle ilişkili sınıfının yeni bir örneğini başlatır.Initializes a new instance of the ServiceController class that is associated with an existing service on the specified computer.

Özellikler

CanPauseAndContinue

Hizmetin duraklatılıp duraklatılamayacağını gösteren bir değer alır.Gets a value indicating whether the service can be paused and resumed.

CanRaiseEvents

Bileşenin bir olay yapıp yapamayacağını gösteren bir değer alır.Gets a value indicating whether the component can raise an event.

(Devralındığı yer: Component)
CanShutdown

Sistem kapatılırken hizmetin bildirilmesi gerekip gerekmediğini gösteren bir değer alır.Gets a value indicating whether the service should be notified when the system is shutting down.

CanStop

Hizmetin başlatıldıktan sonra durdurulup durdurulamayacağını gösteren bir değer alır.Gets a value indicating whether the service can be stopped after it has started.

Container

Öğesini içeren öğesini alır IContainer Component .Gets the IContainer that contains the Component.

(Devralındığı yer: Component)
DependentServices

Bu örnekle ilişkili hizmete bağlı olan hizmet kümesini alır ServiceController .Gets the set of services that depends on the service associated with this ServiceController instance.

DesignMode

Şu anda Tasarım modunda olup olmadığını gösteren bir değer alır Component .Gets a value that indicates whether the Component is currently in design mode.

(Devralındığı yer: Component)
DisplayName

Hizmetin kolay bir adını alır veya ayarlar.Gets or sets a friendly name for the service.

Events

Bu öğesine eklenen olay işleyicilerinin listesini alır Component .Gets the list of event handlers that are attached to this Component.

(Devralındığı yer: Component)
MachineName

Bu hizmetin bulunduğu bilgisayarın adını alır veya ayarlar.Gets or sets the name of the computer on which this service resides.

ServiceHandle

Hizmet tanıtıcısını alır.Gets the handle for the service.

ServiceName

Bu örneğin başvurduğu hizmeti tanımlayan adı alır veya ayarlar.Gets or sets the name that identifies the service that this instance references.

ServicesDependedOn

Bu hizmetin bağımlı olduğu hizmet kümesi.The set of services that this service depends on.

ServiceType

Bu nesnenin başvurduğu hizmetin türünü alır.Gets the type of service that this object references.

Site

Öğesini alır veya ayarlar ISite Component .Gets or sets the ISite of the Component.

(Devralındığı yer: Component)
StartType

Nesnenin gösterdiği hizmetin nasıl başladığını gösteren bir değer alır ServiceController .Gets a value that indicates how the service represented by the ServiceController object starts.

Status

Bu örnek tarafından başvurulan hizmetin durumunu alır.Gets the status of the service that is referenced by this instance.

Yöntemler

Close()

Bu ServiceController Örneğin hizmetten bağlantısını keser ve örneği ayrılan tüm kaynakları serbest bırakır.Disconnects this ServiceController instance from the service and frees all the resources that the instance allocated.

Continue()

Duraklatıldıktan sonra bir hizmet devam ettirir.Continues a service after it has been paused.

CreateObjRef(Type)

Uzak bir nesneyle iletişim kurmak için kullanılan bir ara sunucu oluşturmak için gereken tüm bilgileri içeren bir nesne oluşturur.Creates an object that contains all the relevant information required to generate a proxy used to communicate with a remote object.

(Devralındığı yer: MarshalByRefObject)
Dispose()

Uygulama tarafından tanımlanan, yönetilmeyen kaynakları serbest bırakma, salma veya sıfırlama ile ilişkili görevleri gerçekleştirir.Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.

Dispose()

Component tarafından kullanılan tüm kaynakları serbest bırakır.Releases all resources used by the Component.

(Devralındığı yer: Component)
Dispose(Boolean)

ServiceController tarafından kullanılan yönetilmeyen kaynakları serbest bırakır ve yönetilen kaynakları isteğe bağlı olarak serbest bırakır.Releases the unmanaged resources used by the ServiceController and optionally releases the managed resources.

Equals(Object)

Belirtilen nesnenin geçerli nesneye eşit olup olmadığını belirler.Determines whether the specified object is equal to the current object.

(Devralındığı yer: Object)
ExecuteCommand(Int32)

Hizmette özel bir komut yürütür.Executes a custom command on the service.

GetDevices()

Yerel bilgisayardaki aygıt sürücüsü hizmetlerini alır.Retrieves the device driver services on the local computer.

GetDevices(String)

Belirtilen bilgisayardaki cihaz sürücüsü hizmetlerini alır.Retrieves the device driver services on the specified computer.

GetHashCode()

Varsayılan karma işlevi olarak işlev görür.Serves as the default hash function.

(Devralındığı yer: Object)
GetLifetimeService()
Kullanımdan kalktı.

Bu örnek için ömür ilkesini denetleyen geçerli ömür hizmeti nesnesini alır.Retrieves the current lifetime service object that controls the lifetime policy for this instance.

(Devralındığı yer: MarshalByRefObject)
GetService(Type)

Veya tarafından belirtilen bir hizmeti temsil eden bir nesne döndürür Component Container .Returns an object that represents a service provided by the Component or by its Container.

(Devralındığı yer: Component)
GetServices()

Cihaz sürücüsü hizmetleri dışında, yerel bilgisayardaki tüm hizmetleri alır.Retrieves all the services on the local computer, except for the device driver services.

GetServices(String)

Aygıt sürücüsü hizmetleri dışında, belirtilen bilgisayardaki tüm hizmetleri alır.Retrieves all the services on the specified computer, except for the device driver services.

GetType()

TypeGeçerli örneği alır.Gets the Type of the current instance.

(Devralındığı yer: Object)
InitializeLifetimeService()
Kullanımdan kalktı.

Bu örnek için ömür ilkesini denetlemek üzere bir ömür hizmeti nesnesi alır.Obtains a lifetime service object to control the lifetime policy for this instance.

(Devralındığı yer: MarshalByRefObject)
MemberwiseClone()

Geçerli bir basit kopyasını oluşturur Object .Creates a shallow copy of the current Object.

(Devralındığı yer: Object)
MemberwiseClone(Boolean)

Geçerli nesnenin basit bir kopyasını oluşturur MarshalByRefObject .Creates a shallow copy of the current MarshalByRefObject object.

(Devralındığı yer: MarshalByRefObject)
Pause()

Hizmetin işlemini askıya alır.Suspends a service's operation.

Refresh()

Özellikleri geçerli değerlerine sıfırlayarak özellik değerlerini yeniler.Refreshes property values by resetting the properties to their current values.

Start()

Bir bağımsız değişken geçirerek hizmeti başlatır.Starts the service, passing no arguments.

Start(String[])

Belirtilen bağımsız değişkenleri geçirerek bir hizmet başlatır.Starts a service, passing the specified arguments.

Stop()

Bu hizmeti ve bu hizmete bağlı olan hizmetleri sonlandırır.Stops this service and any services that are dependent on this service.

ToString()

Varsa, String varsa adını içeren bir döndürür Component .Returns a String containing the name of the Component, if any. Bu yöntem geçersiz kılınmamalıdır.This method should not be overridden.

(Devralındığı yer: Component)
ToString()

Geçerli nesneyi temsil eden dizeyi döndürür.Returns a string that represents the current object.

(Devralındığı yer: Object)
WaitForStatus(ServiceControllerStatus)

Infinsonsuza, hizmetin belirtilen duruma ulaşmasını bekler.Infinitely waits for the service to reach the specified status.

WaitForStatus(ServiceControllerStatus, TimeSpan)

Hizmetin belirtilen duruma ulaşmasını veya belirtilen zaman aşımı süresinin dolacağını bekler.Waits for the service to reach the specified status or for the specified time-out to expire.

Ekinlikler

Disposed

Bileşen yönteme bir çağrı tarafından bırakıldığında gerçekleşir Dispose() .Occurs when the component is disposed by a call to the Dispose() method.

(Devralındığı yer: Component)

Şunlara uygulanır

Ayrıca bkz.