ServiceController クラス
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
Windows サービスを表し、実行中のサービスまたは停止したサービスへの接続、サービスの操作、またはサービスに関する情報の取得を実現します。
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
- 継承
- 継承
-
ServiceController
- 属性
- 実装
例
次の例では、クラスを使用してサービスの ServiceController 例を制御します 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
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
注釈
このクラスを ServiceController 使用して、既存のサービスに接続して動作を制御できます。 クラスのインスタンスを作成するときは、そのプロパティをServiceController設定して、特定のWindows サービスと対話します。 その後、このクラスを使用してサービスを開始、停止、および操作できます。
ほとんどの場合、管理容量で ServiceController コンポーネントを使用します。 たとえば、インスタンスを介してサービスにカスタム コマンドを送信するWindowsまたは Web アプリケーションをServiceController作成できます。 これは、Service Control Manager (SCM) Microsoft 管理コンソール スナップインがカスタム コマンドをサポートしていないために役立ちます。
インスタンス ServiceControllerを作成した後、コンピューター名と制御するサービスの名前の 2 つのプロパティを設定して、対話するサービスを識別する必要があります。
注意
既定では、 MachineName ローカル コンピューターに設定されているため、インスタンスを別のコンピューターをポイントするように設定する場合を除き、変更する必要はありません。
通常、サービス作成者は、特定のコマンドに関連付けられているアクションをカスタマイズするコードを記述します。 たとえば、サービスには、コマンドに応答するコードを ServiceBase.OnPause 含めることができます。 その場合、タスクのカスタム処理は、システムが Pause サービスを一時停止する前に実行されます。
サービスが処理できるコマンドのセットは、そのプロパティによって異なります。たとえば、サービスのプロパティを にCanStopfalse
設定できます。 この設定により、その特定の Stop
サービスでコマンドが使用できなくなります。必要なボタンを無効にすることで、SCM からサービスを停止できなくなります。 コードからサービスを停止しようとすると、システムによってエラーが発生し、"停止 servicename
できませんでした" というエラー メッセージが表示されます。
コンストラクター
ServiceController() |
特定のサービスに関連付けられていない ServiceController クラスの新しいインスタンスを初期化します。 |
ServiceController(String) |
ローカル コンピューターの既存のサービスに関連付けられている ServiceController クラスの新しいインスタンスを初期化します。 |
ServiceController(String, String) |
指定したコンピューターの既存のサービスに関連付けられている ServiceController クラスの新しいインスタンスを初期化します。 |
プロパティ
CanPauseAndContinue |
サービスを一時中断および再開できるかどうかを示す値を取得します。 |
CanRaiseEvents |
コンポーネントがイベントを発生させることがきるかどうかを示す値を取得します。 (継承元 Component) |
CanShutdown |
システムのシャットダウン時に、サービスにそれを通知する必要があるかどうかを示す値を取得します。 |
CanStop |
サービスをいったん開始してから停止できるかどうかを示す値を取得します。 |
Container |
IContainer を含む Component を取得します。 (継承元 Component) |
DependentServices |
この ServiceController インスタンスに関連付けられたサービスに依存している一連のサービスを取得します。 |
DesignMode |
Component が現在デザイン モードかどうかを示す値を取得します。 (継承元 Component) |
DisplayName |
サービスの表示名を取得または設定します。 |
Events |
Component に結び付けられているイベント ハンドラーのリストを取得します。 (継承元 Component) |
MachineName |
このサービスが常駐しているコンピューターの名前を取得または設定します。 |
ServiceHandle |
サービスのハンドルを取得します。 |
ServiceName |
このインスタンスが参照するサービスを識別する名前を取得または設定します。 |
ServicesDependedOn |
対象となるサービスが依存している一連のサービス。 |
ServiceType |
対象となるオブジェクトが参照するサービスの種類を取得します。 |
Site |
Component の ISite を取得または設定します。 (継承元 Component) |
StartType |
ServiceController オブジェクトによって表されるサービスの開始方法を示す値を取得します。 |
Status |
対象となるインスタンスが参照するサービスのステータスを取得します。 |
メソッド
Close() |
対象となる ServiceController インスタンスをサービスから切断し、インスタンスが割り当てたすべてのリソースを解放します。 |
Continue() |
サービスが一時中断された後に、続行します。 |
CreateObjRef(Type) |
リモート オブジェクトとの通信に使用するプロキシの生成に必要な情報をすべて格納しているオブジェクトを作成します。 (継承元 MarshalByRefObject) |
Dispose() |
アンマネージ リソースの解放またはリセットに関連付けられているアプリケーション定義のタスクを実行します。 |
Dispose() |
Component によって使用されているすべてのリソースを解放します。 (継承元 Component) |
Dispose(Boolean) |
ServiceController によって使用されているアンマネージド リソースを解放し、オプションでマネージド リソースも解放します。 |
Equals(Object) |
指定されたオブジェクトが現在のオブジェクトと等しいかどうかを判断します。 (継承元 Object) |
ExecuteCommand(Int32) |
サービスでカスタム コマンドを実行します。 |
GetDevices() |
ローカル コンピューターのデバイス ドライバー サービスを取得します。 |
GetDevices(String) |
指定したコンピューターのデバイス ドライバー サービスを取得します。 |
GetHashCode() |
既定のハッシュ関数として機能します。 (継承元 Object) |
GetLifetimeService() |
互換性のために残されています。
対象のインスタンスの有効期間ポリシーを制御する、現在の有効期間サービス オブジェクトを取得します。 (継承元 MarshalByRefObject) |
GetService(Type) |
Component またはその Container で提供されるサービスを表すオブジェクトを返します。 (継承元 Component) |
GetServices() |
デバイス ドライバー サービス以外の、ローカル コンピューターのすべてのサービスを取得します。 |
GetServices(String) |
デバイス ドライバー サービス以外の、指定したコンピューターのすべてのサービスを取得します。 |
GetType() |
現在のインスタンスの Type を取得します。 (継承元 Object) |
InitializeLifetimeService() |
互換性のために残されています。
このインスタンスの有効期間ポリシーを制御する有効期間サービス オブジェクトを取得します。 (継承元 MarshalByRefObject) |
MemberwiseClone() |
現在の Object の簡易コピーを作成します。 (継承元 Object) |
MemberwiseClone(Boolean) |
現在の MarshalByRefObject オブジェクトの簡易コピーを作成します。 (継承元 MarshalByRefObject) |
Pause() |
サービスの操作を中断します。 |
Refresh() |
プロパティを現在の値に再設定し、プロパティ値を更新します。 |
Start() |
引数を渡さずに、サービスを開始します。 |
Start(String[]) |
指定した引数を渡して、サービスを開始します。 |
Stop() |
このサービスと、このサービスに依存しているすべてのサービスを停止します。 |
Stop(Boolean) |
サービスと、必要に応じてこのサービスに依存するすべてのサービスを停止します。 |
ToString() |
Component の名前 (存在する場合) を格納する String を返します。 このメソッドはオーバーライドできません。 (継承元 Component) |
ToString() |
現在のオブジェクトを表す文字列を返します。 (継承元 Object) |
WaitForStatus(ServiceControllerStatus) |
サービスが指定したステータスになるまで、無期限に待機します。 |
WaitForStatus(ServiceControllerStatus, TimeSpan) |
サービスが指定したステータスになるまで、または指定したタイムアウトの期限が切れるまで待機します。 |
events
Disposed |
Dispose() メソッドの呼び出しによってコンポーネントが破棄されるときに発生します。 (継承元 Component) |