Aracılığıyla paylaş


ServiceController Sınıf

Tanım

Bir Windows hizmetini temsil eder ve çalışan veya durdurulan bir hizmete bağlanmanızı, hizmeti işlemenizi veya bu hizmet hakkında bilgi almanızı sağlar.

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, hizmet örneğini ServiceController denetlemek SimpleService için sınıfının kullanımını gösterir.

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

sınıfını ServiceController kullanarak mevcut hizmetlere bağlanabilir ve bu hizmetlerin davranışını denetleyebilirsiniz. Sınıfın bir örneğini ServiceController oluşturduğunuzda, belirli bir Windows hizmetiyle etkileşim kuracak şekilde özelliklerini ayarlarsınız. Ardından hizmeti başlatmak, durdurmak ve başka bir şekilde işlemek için sınıfını kullanabilirsiniz.

Bileşeni büyük olasılıkla bir yönetim kapasitesinde kullanacaksınız ServiceController . Örneğin, örnek aracılığıyla ServiceController bir hizmete özel komutlar gönderen bir Windows veya Web uygulaması oluşturabilirsiniz. Hizmet Denetim Yöneticisi (SCM) Microsoft Yönetim Konsolu ek bileşeni özel komutları desteklemediğinden bu yararlı olabilir.

örneğini ServiceControlleroluşturduktan sonra, etkileşimde bulunduğu hizmeti tanımlamak için üzerinde iki özellik ayarlamanız gerekir: bilgisayar adı ve denetlemek istediğiniz hizmetin adı.

Uyarı

Varsayılan olarak, MachineName yerel bilgisayara ayarlanır, bu nedenle örneği başka bir bilgisayara işaret edene kadar değiştirmeniz gerekmez.

Genellikle, hizmet yazarı belirli bir komutla ilişkili eylemi özelleştiren kod yazar. Örneğin, bir hizmet bir komuta yanıt vermek için ServiceBase.OnPause kod içerebilir. Bu durumda, sistem hizmeti duraklatmadan önce görev için Pause özel işleme çalıştırılır.

Bir hizmetin işleyebileceği komut kümesi özelliklerine bağlıdır; örneğin, bir hizmetin özelliğini olarak falseayarlayabilirsinizCanStop. Bu ayar, komutu söz konusu hizmette kullanılamaz duruma Stop getirir; gerekli düğmeyi devre dışı bırakarak hizmeti SCM'den durdurmanızı engeller. Hizmeti kodunuzdan durdurmaya çalışırsanız sistem bir hata oluşturur ve "Durdurulamadı servicename" hata iletisini görüntüler.

Oluşturucular

Name Description
ServiceController()

Sınıfın ServiceController belirli bir hizmetle ilişkili olmayan yeni bir örneğini başlatır.

ServiceController(String, String)

Belirtilen bilgisayardaki mevcut bir hizmetle ilişkili sınıfın yeni bir örneğini ServiceController başlatır.

ServiceController(String)

Sınıfın ServiceController , yerel bilgisayardaki mevcut bir hizmetle ilişkili yeni bir örneğini başlatır.

Özellikler

Name Description
CanPauseAndContinue

Hizmetin duraklatılıp sürdürülemeyeceğini belirten bir değer alır.

CanRaiseEvents

Bileşenin olay oluşturup oluşturamayacağını belirten bir değer alır.

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

Sistem kapatılırken hizmete bildirim gönderilip bildirilmeyeceğini belirten bir değer alır.

CanStop

Hizmetin başlatıldıktan sonra durdurulup durdurulamayacağını belirten bir değer alır.

Container

öğesini IContainer içeren öğesini Componentalır.

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

Bu ServiceController örnekle ilişkili hizmete bağlı olan hizmet kümesini alır.

DesignMode

öğesinin şu anda tasarım modunda olup olmadığını Component gösteren bir değer alır.

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

Hizmet için kolay bir ad alır veya ayarlar.

Events

Bu Componentöğesine eklenen olay işleyicilerinin listesini alır.

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

Bu hizmetin bulunduğu bilgisayarın adını alır veya ayarlar.

ServiceHandle

Hizmetin tutamacını alır.

ServiceName

Bu örneğin başvurduğunu hizmeti tanımlayan adı alır veya ayarlar.

ServicesDependedOn

Bu hizmetin bağlı olduğu hizmet kümesi.

ServiceType

Bu nesnenin başvurduğunu hizmet türünü alır.

Site

öğesini alır veya ayarlar ISiteComponent.

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

Nesne tarafından ServiceController temsil edilen hizmetin nasıl başladığını gösteren bir değer alır.

Status

Bu örnek tarafından başvuruda bulunan hizmetin durumunu alır.

Yöntemler

Name Description
Close()

Bu ServiceController örneğin hizmetle bağlantısını keser ve örneğin ayırmış olduğu tüm kaynakları serbest kaldırır.

Continue()

Bir hizmet duraklatıldıktan sonra devam eder.

CreateObjRef(Type)

Uzak bir nesneyle iletişim kurmak için kullanılan bir ara sunucu oluşturmak için gereken tüm ilgili bilgileri içeren bir nesne oluşturur.

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

Yönetilmeyen kaynakları serbest bırakma, serbest bırakma veya sıfırlama ile ilişkili uygulama tanımlı görevleri gerçekleştirir.

Dispose()

tarafından Componentkullanılan tüm kaynakları serbest bırakır.

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

tarafından ServiceController kullanılan yönetilmeyen kaynakları serbest bırakır ve isteğe bağlı olarak yönetilen kaynakları serbest bırakır.

Equals(Object)

Belirtilen nesnenin geçerli nesneye eşit olup olmadığını belirler.

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

Hizmette özel bir komut yürütür.

GetDevices()

Yerel bilgisayardaki cihaz sürücüsü hizmetlerini alır.

GetDevices(String)

Belirtilen bilgisayardaki cihaz sürücüsü hizmetlerini alır.

GetHashCode()

Varsayılan karma işlevi işlevi görür.

(Devralındığı yer: Object)
GetLifetimeService()
Geçersiz.

Bu örnek için yaşam süresi ilkesini denetleen geçerli yaşam süresi hizmet nesnesini alır.

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

veya Componenttarafından Container sağlanan bir hizmeti temsil eden bir nesnesi döndürür.

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

Cihaz sürücüsü hizmetleri dışında yerel bilgisayardaki tüm hizmetleri alır.

GetServices(String)

Cihaz sürücüsü hizmetleri dışında belirtilen bilgisayardaki tüm hizmetleri alır.

GetType()

Geçerli örneğin Type alır.

(Devralındığı yer: Object)
InitializeLifetimeService()
Geçersiz.

Bu örneğin yaşam süresi ilkesini denetlemek için bir yaşam süresi hizmet nesnesi alır.

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

Geçerli Objectbasit bir kopyasını oluşturur.

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

Geçerli MarshalByRefObject nesnenin sığ bir kopyasını oluşturur.

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

Bir hizmetin işlemini askıya alır.

Refresh()

Özellikleri geçerli değerlerine sıfırlayarak özellik değerlerini yeniler.

Start()

Bağımsız değişken geçirmeden hizmeti başlatır.

Start(String[])

Belirtilen bağımsız değişkenleri geçirerek bir hizmet başlatır.

Stop()

Bu hizmeti ve bu hizmete bağımlı olan tüm hizmetleri durdurur.

Stop(Boolean)

Hizmeti ve isteğe bağlı olarak bu hizmete bağımlı olan tüm hizmetleri durdurur.

ToString()

Varsa, adını Stringiçeren bir Component döndürür. Bu yöntem geçersiz kılınmamalıdır.

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

Geçerli nesneyi temsil eden bir dize döndürür.

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

Hizmetin belirtilen duruma ulaşmasını veya belirtilen zaman aşımı süresinin dolmasını bekler.

WaitForStatus(ServiceControllerStatus)

Hizmetin belirtilen duruma ulaşmasını sonsuz olarak bekler.

Ekinlikler

Name Description
Disposed

Bileşen yöntemine Dispose() yapılan bir çağrıyla atıldığında gerçekleşir.

(Devralındığı yer: Component)

Şunlara uygulanır

Ayrıca bkz.