ServiceControllerとは? わかりやすく解説

ServiceController イベント


ServiceController クラス

Windows サービスを表し、実行中のサービスまたは停止したサービスへの接続、サービスの操作、またはサービスに関する情報の取得を実現します。

名前空間: System.ServiceProcess
アセンブリ: System.ServiceProcess (system.serviceprocess.dll 内)
構文構文

Public Class ServiceController
    Inherits Component
Dim instance As ServiceController
public class ServiceController : Component
public ref class ServiceController : public
 Component
public class ServiceController extends Component
public class ServiceController extends
 Component
解説解説

ServiceController クラスを使用すると、既存のサービスに接続して、動作を制御できます。ServiceController クラスのインスタンスを作成すると、特定の Windows サービスと対話できるようにプロパティを設定します。この設定後、クラスを使用してサービスの開始、停止、およびその他の操作を実行できます。

ほとんどの場合、ServiceController コンポーネントは管理機能として使用します。たとえば、ServiceController インスタンスを通じてサービスにカスタム コマンドを送信する Windows アプリケーションまたは Web アプリケーションを作成できます。サービス コントロール マネージャ (SCM: Service Control Manager) Microsoft 管理コンソール スナップインではカスタム コマンドがサポートされていないため、このような機能は便利です。

ServiceController のインスタンスを作成した後で、対話の対象となるサービスを識別する 2 つのプロパティとして、制御するコンピュータ名およびサービス名を設定する必要があります。

メモメモ

既定では、MachineName はローカル コンピュータに設定されているため、別のコンピュータを指定するインスタンスを設定しない限り、この設定を変更する必要はありません。

通常、サービスの作成者は、特定のコマンドに関連付けられているアクションをカスタマイズするコードを書き込みます。たとえば、ServiceBase.OnPause コマンドに応答するコードをサービスに含むことができます。この場合、Pause タスクのカスタム プロセスは、システムがサービスを一時中断する前に実行されます。

サービスが処理できる一連のコマンドは、そのサービスのプロパティによって決まります。たとえば、あるサービスの CanStop プロパティを false に設定するとします。この設定により、そのサービスでは Stop コマンドが使用できなくなります。必要なボタンを無効にすると、SCM でサービスを停止できなくなります。コードでサービスを停止しようとすると、エラーが発生し、" servicename を停止できませんでした。" というエラー メッセージが表示されます。

継承階層継承階層
System.Object
   System.MarshalByRefObject
     System.ComponentModel.Component
      System.ServiceProcess.ServiceController
スレッド セーフスレッド セーフ
この型の public static (Visual Basic では Shared) メンバはすべて、スレッド セーフです。インスタンス メンバの場合は、スレッド セーフであるとは限りません。
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照
関連項目
ServiceController メンバ
System.ServiceProcess 名前空間
ServiceBase クラス
ServiceControllerStatus
ServiceType

ServiceController コンストラクタ ()

特定のサービスに関連付けられていない ServiceController クラスの新しいインスタンスを初期化します。

名前空間: System.ServiceProcess
アセンブリ: System.ServiceProcess (system.serviceprocess.dll 内)
構文構文

Dim instance As New ServiceController
public ServiceController ()
public:
ServiceController ()
public ServiceController ()
public function ServiceController ()
使用例使用例

ServiceController クラスを使用して Alerter サービスが停止しているかどうかを確認する例を次に示します。サービスが停止している場合、このコードはサービスを開始し、サービス ステータスが Running に設定されるまで待機します。

' Check whether the Alerter service is started.

Dim sc As New ServiceController()
sc.ServiceName = "Alerter"
Console.WriteLine("The Alerter service status is currently set
 to {0}", sc.Status)

If sc.Status = ServiceControllerStatus.Stopped Then
   ' Start the service if the current status is stopped.
   Console.WriteLine("Starting the Alerter service...")

   Try
      ' Start the service, and wait until its status is "Running".
      sc.Start()
      sc.WaitForStatus(ServiceControllerStatus.Running)
      
      ' Display the current service status.
      Console.WriteLine("The Alerter service status is now set
 to {0}.", sc.Status)
   Catch 
      Console.WriteLine("Could not start the Alerter service.")
   End Try
End If

// Check whether the Alerter service is started.

ServiceController sc  = new ServiceController();
sc.ServiceName = "Alerter";
Console.WriteLine("The Alerter service status is currently set
 to {0}", 
                   sc.Status.ToString());

if (sc.Status == ServiceControllerStatus.Stopped)
{
   // Start the service if the current status is stopped.

   Console.WriteLine("Starting the Alerter service...");
   try 
   {
      // Start the service, and wait until its status is "Running".
      sc.Start();
      sc.WaitForStatus(ServiceControllerStatus.Running);
   
      // Display the current service status.
      Console.WriteLine("The Alerter service status is now set
 to {0}.", 
                         sc.Status.ToString());
   }
   catch (InvalidOperationException)
   {
      Console.WriteLine("Could not start the Alerter service.");
   }
}
// Check whether the Alerter service is started.
ServiceController^ sc = gcnew ServiceController;
if ( sc )
{
   sc->ServiceName =  "Alerter";
   Console::WriteLine(  "The Alerter service status is currently set
 to {0}", sc->Status );
   if ( sc->Status == (ServiceControllerStatus::Stopped) )
   {
      // Start the service if the current status is stopped.
      Console::WriteLine(  "Starting the Alerter service..." );
      try
      {
         // Start the service, and wait until its status is "Running".
         sc->Start();
         sc->WaitForStatus( ServiceControllerStatus::Running );
         
         // Display the current service status.
         Console::WriteLine(  "The Alerter service status is now set
 to {0}.", sc->Status );
      }
      catch ( InvalidOperationException^ e ) 
      {
         Console::WriteLine(  "Could not start the Alerter service." );
      }
   }
}
// Check whether the Alerter service is started.
ServiceController sc = new ServiceController();
sc.set_ServiceName("Alerter");
Console.WriteLine("The Alerter service status is currently set
 to {0}",
    sc.get_Status().ToString());

if (sc.get_Status().Equals(ServiceControllerStatus.Stopped)) {
    // Start the service if the current status is stopped.
    Console.WriteLine("Starting the Alerter service...");
    try {
        // Start the service, and wait until its status is 
        // "Running".
        sc.Start();
        sc.WaitForStatus(ServiceControllerStatus.Running);
        // Display the current service status.
        Console.WriteLine("The Alerter service status is now set
 to {0}.",
            sc.get_Status().ToString());
    }
    catch (InvalidOperationException exp) {
        Console.WriteLine("Could not start the Alerter service.");
    }
}
.NET Framework のセキュリティ.NET Framework のセキュリティ
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照

ServiceController コンストラクタ (String)

ローカル コンピュータの既存のサービスに関連付けられている ServiceController クラスの新しいインスタンスを初期化します。

名前空間: System.ServiceProcess
アセンブリ: System.ServiceProcess (system.serviceprocess.dll 内)
構文構文

Dim name As String

Dim instance As New ServiceController(name)
public ServiceController (
    string name
)
public:
ServiceController (
    String^ name
)
public ServiceController (
    String name
)
public function ServiceController (
    name : String
)

パラメータ

name

システムでサービスを識別するための短い名前。

例外例外
例外の種類条件

ArgumentException

name パラメータが null 参照 (Visual Basic では Nothing) か、長さが 0 です。

使用例使用例

ServiceController クラスを使用して、Telnet サービスの現在のステータスを確認する例を次に示します。サービスが停止している場合、このコードはサービスを開始します。サービスが実行中である場合は、そのサービスを停止します。

' Toggle the Telnet service - 
' If it is started (running, paused, etc), stop the service.
' If it is stopped, start the service.
Dim sc As New ServiceController("Telnet")
Console.WriteLine("The Telnet service status is currently set
 to {0}", sc.Status)

If sc.Status.Equals(ServiceControllerStatus.Stopped) Or
 sc.Status.Equals(ServiceControllerStatus.StopPending) Then
   ' Start the service if the current status is stopped.
   Console.WriteLine("Starting the Telnet service...")
   sc.Start()
Else
   ' Stop the service if its status is not set to "Stopped".
   Console.WriteLine("Stopping the Telnet service...")
   sc.Stop()
End If

' Refresh and display the current service status.
sc.Refresh()
Console.WriteLine("The Telnet service status is now set to {0}.",
 sc.Status)

// Toggle the Telnet service - 
// If it is started (running, paused, etc), stop the service.
// If it is stopped, start the service.
ServiceController sc = new ServiceController("Telnet");
Console.WriteLine("The Telnet service status is currently set
 to {0}", 
                  sc.Status.ToString());

if  ((sc.Status.Equals(ServiceControllerStatus.Stopped)) ||
     (sc.Status.Equals(ServiceControllerStatus.StopPending)))
{
   // Start the service if the current status is stopped.

   Console.WriteLine("Starting the Telnet service...");
   sc.Start();
}  
else
{
   // Stop the service if its status is not set to "Stopped".

   Console.WriteLine("Stopping the Telnet service...");
   sc.Stop();
}  

// Refresh and display the current service status.
sc.Refresh();
Console.WriteLine("The Telnet service status is now set to
 {0}.", 
                   sc.Status.ToString());

// Toggle the Telnet service - 
// If it is started (running, paused, etc), stop the service.
// If it is stopped, start the service.
ServiceController^ sc = gcnew ServiceController(  "Telnet" );
if ( sc )
{
   Console::WriteLine(  "The Telnet service status is currently set
 to {0}", sc->Status );
   if ( (sc->Status == (ServiceControllerStatus::Stopped) )
 || (sc->Status == (ServiceControllerStatus::StopPending) ) )
   {
      // Start the service if the current status is stopped.
      Console::WriteLine(  "Starting the Telnet service..." );
      sc->Start();
   }
   else
   {
      // Stop the service if its status is not set to "Stopped".
      Console::WriteLine(  "Stopping the Telnet service..." );
      sc->Stop();
   }

   // Refresh and display the current service status.
   sc->Refresh();
   Console::WriteLine(  "The Telnet service status is now set
 to {0}.", sc->Status );
// Toggle the Telnet service - 
// If it is started (running, paused, etc), stop the service.
// If it is stopped, start the service.
ServiceController sc = new ServiceController("Telnet");
Console.WriteLine("The Telnet service status is currently set
 to {0}",
    sc.get_Status().ToString());

if (sc.get_Status().Equals(ServiceControllerStatus.Stopped) ||
 
    sc.get_Status().Equals(ServiceControllerStatus.StopPending)) {
    // Start the service if the current status is stopped.
    Console.WriteLine("Starting the Telnet service...");
    sc.Start();
}
else {
    // Stop the service if its status is not set to "Stopped".
    Console.WriteLine("Stopping the Telnet service...");
    sc.Stop();
}
// Refresh and display the current service status.
sc.Refresh();
Console.WriteLine("The Telnet service status is now set to
 {0}.", 
    sc.get_Status().ToString());
.NET Framework のセキュリティ.NET Framework のセキュリティ
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照

ServiceController コンストラクタ (String, String)

指定したコンピュータの既存のサービスに関連付けられている ServiceController クラスの新しいインスタンスを初期化します。

名前空間: System.ServiceProcess
アセンブリ: System.ServiceProcess (system.serviceprocess.dll 内)
構文構文

Public Sub New ( _
    name As String, _
    machineName As String _
)
Dim name As String
Dim machineName As String

Dim instance As New ServiceController(name,
 machineName)
public ServiceController (
    string name,
    string machineName
)
public:
ServiceController (
    String^ name, 
    String^ machineName
)
public ServiceController (
    String name, 
    String machineName
)
public function ServiceController (
    name : String, 
    machineName : String
)

パラメータ

name

システムでサービスを識別するための短い名前。

machineName

サービスが常駐するコンピュータ。

例外例外
例外の種類条件

ArgumentException

name パラメータが null 参照 (Visual Basic では Nothing) か、長さが 0 です。

または

machineName パラメータの構文が無効です。

解説解説

machineName パラメータで "." を使用すると、ローカル コンピュータを表すことができます。

.NET Framework のセキュリティ.NET Framework のセキュリティ
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照

ServiceController コンストラクタ


ServiceController プロパティ


パブリック プロパティパブリック プロパティ

( プロテクト プロパティ も参照)
  名前 説明
パブリック プロパティ CanPauseAndContinue サービスを一時中断および再開できるかどうかを示す値を取得します。
パブリック プロパティ CanShutdown システムのシャットダウン時に、サービスにそれを通知する必要があるかどうかを示す値を取得します。
パブリック プロパティ CanStop サービスをいったん開始してから停止できるかどうかを示す値を取得します。
パブリック プロパティ Container  Component を格納している IContainer を取得します。 ( Component から継承されます。)
パブリック プロパティ DependentServices この ServiceController インスタンスに関連付けられたサービスに依存している一連のサービスを取得します。
パブリック プロパティ DisplayName サービスの表示名を取得または設定します。
パブリック プロパティ MachineName このサービスが常駐しているコンピュータの名前を取得または設定します。
パブリック プロパティ ServiceHandle サービスのハンドルを取得します。
パブリック プロパティ ServiceName このインスタンスが参照するサービスを識別する名前を取得または設定します。
パブリック プロパティ ServicesDependedOn 対象となるサービスが依存している一連のサービス。
パブリック プロパティ ServiceType 対象となるオブジェクトが参照するサービスの種類を取得します。
パブリック プロパティ Site  Component の ISite を取得または設定します。 ( Component から継承されます。)
パブリック プロパティ Status 対象となるインスタンスが参照するサービスのステータスを取得します。
プロテクト プロパティプロテクト プロパティ
参照参照

関連項目

ServiceController クラス
System.ServiceProcess 名前空間
ServiceBase クラス
ServiceControllerStatus
ServiceType

ServiceController メソッド


パブリック メソッドパブリック メソッド

( プロテクト メソッド も参照)
  名前 説明
パブリック メソッド Close 対象となる ServiceController インスタンスをサービスから切断し、インスタンスが割り当てたすべてのリソースを解放します。
パブリック メソッド Continue サービスが一時中断された後に、続行します。
パブリック メソッド CreateObjRef  リモート オブジェクトとの通信に使用するプロキシの生成に必要な情報をすべて格納しているオブジェクトを作成します。 ( MarshalByRefObject から継承されます。)
パブリック メソッド Dispose オーバーロードされます。  
パブリック メソッド Equals  オーバーロードされます。 2 つの Object インスタンスが等しいかどうかを判断します。 ( Object から継承されます。)
パブリック メソッド ExecuteCommand サービスでカスタム コマンドを実行します。
パブリック メソッド GetDevices オーバーロードされます。 コンピュータのデバイス ドライバ サービスを取得します。
パブリック メソッド GetHashCode  特定の型のハッシュ関数として機能します。GetHashCode は、ハッシュ アルゴリズムや、ハッシュ テーブルのようなデータ構造での使用に適しています。 ( Object から継承されます。)
パブリック メソッド GetLifetimeService  対象のインスタンスの有効期間ポリシーを制御する、現在の有効期間サービス オブジェクトを取得します。 ( MarshalByRefObject から継承されます。)
パブリック メソッド GetServices オーバーロードされます。 コンピュータのデバイス以外のドライバ サービス、およびドライバ以外のサービスを取得します。
パブリック メソッド GetType  現在のインスタンスの Type を取得します。 ( Object から継承されます。)
パブリック メソッド InitializeLifetimeService  対象のインスタンスの有効期間ポリシーを制御する、有効期間サービス オブジェクトを取得します。 ( MarshalByRefObject から継承されます。)
パブリック メソッド Pause サービスの操作を中断します。
パブリック メソッド ReferenceEquals  指定した複数の Object インスタンスが同一かどうかを判断します。 ( Object から継承されます。)
パブリック メソッド Refresh すべてのプロパティ値を現在の値に設定して更新します。
パブリック メソッド Start オーバーロードされます。 サービスを開始します。
パブリック メソッド Stop このサービスと、このサービスに依存しているすべてのサービスを停止します。
パブリック メソッド ToString  Component の名前を格納している String を返します (存在する場合)。このメソッドはオーバーライドできません。 ( Component から継承されます。)
パブリック メソッド WaitForStatus オーバーロードされます。 サービスが指定したステータスになるまで、待機します。
プロテクト メソッドプロテクト メソッド
参照参照

関連項目

ServiceController クラス
System.ServiceProcess 名前空間
ServiceBase クラス
ServiceControllerStatus
ServiceType

ServiceController メンバ

Windows サービスを表し、実行中のサービスまたは停止したサービスへの接続、サービスの操作、またはサービスに関する情報の取得を実現します。

ServiceController データ型で公開されるメンバを以下の表に示します。


パブリック コンストラクタパブリック コンストラクタ
  名前 説明
パブリック メソッド ServiceController オーバーロードされます。 ServiceController クラスの新しいインスタンスを初期化します。
パブリック プロパティパブリック プロパティ
( プロテクト プロパティ も参照)
  名前 説明
パブリック プロパティ CanPauseAndContinue サービスを一時中断および再開できるかどうかを示す値を取得します。
パブリック プロパティ CanShutdown システムのシャットダウン時に、サービスにそれを通知する必要があるかどうかを示す値を取得します。
パブリック プロパティ CanStop サービスをいったん開始してから停止できるかどうかを示す値を取得します。
パブリック プロパティ Container  Component を格納している IContainer を取得します。(Component から継承されます。)
パブリック プロパティ DependentServices この ServiceController インスタンスに関連付けられたサービスに依存している一連のサービスを取得します。
パブリック プロパティ DisplayName サービスの表示名を取得または設定します。
パブリック プロパティ MachineName このサービスが常駐しているコンピュータの名前を取得または設定します。
パブリック プロパティ ServiceHandle サービスのハンドルを取得します。
パブリック プロパティ ServiceName このインスタンスが参照するサービスを識別する名前を取得または設定します。
パブリック プロパティ ServicesDependedOn 対象となるサービスが依存している一連のサービス。
パブリック プロパティ ServiceType 対象となるオブジェクトが参照するサービスの種類を取得します。
パブリック プロパティ Site  Component の ISite を取得または設定します。(Component から継承されます。)
パブリック プロパティ Status 対象となるインスタンスが参照するサービスのステータスを取得します。
プロテクト プロパティプロテクト プロパティ
パブリック メソッドパブリック メソッド
( プロテクト メソッド も参照)
  名前 説明
パブリック メソッド Close 対象となる ServiceController インスタンスをサービスから切断し、インスタンスが割り当てたすべてのリソースを解放します。
パブリック メソッド Continue サービスが一時中断された後に、続行します。
パブリック メソッド CreateObjRef  リモート オブジェクトとの通信に使用するプロキシの生成に必要な情報をすべて格納しているオブジェクトを作成します。 (MarshalByRefObject から継承されます。)
パブリック メソッド Dispose オーバーロードされます。  
パブリック メソッド Equals  オーバーロードされます。 2 つの Object インスタンスが等しいかどうかを判断します。 (Object から継承されます。)
パブリック メソッド ExecuteCommand サービスでカスタム コマンドを実行します。
パブリック メソッド GetDevices オーバーロードされます。 コンピュータのデバイス ドライバ サービスを取得します。
パブリック メソッド GetHashCode  特定の型のハッシュ関数として機能します。GetHashCode は、ハッシュ アルゴリズムや、ハッシュ テーブルのようなデータ構造での使用に適しています。 (Object から継承されます。)
パブリック メソッド GetLifetimeService  対象のインスタンスの有効期間ポリシーを制御する、現在の有効期間サービス オブジェクトを取得します。 (MarshalByRefObject から継承されます。)
パブリック メソッド GetServices オーバーロードされます。 コンピュータのデバイス以外のドライバ サービス、およびドライバ以外のサービスを取得します。
パブリック メソッド GetType  現在のインスタンスの Type を取得します。 (Object から継承されます。)
パブリック メソッド InitializeLifetimeService  対象のインスタンスの有効期間ポリシーを制御する、有効期間サービス オブジェクトを取得します。 (MarshalByRefObject から継承されます。)
パブリック メソッド Pause サービスの操作を中断します。
パブリック メソッド ReferenceEquals  指定した複数の Object インスタンスが同一かどうかを判断します。 (Object から継承されます。)
パブリック メソッド Refresh すべてのプロパティ値を現在の値に設定して更新します。
パブリック メソッド Start オーバーロードされます。 サービスを開始します。
パブリック メソッド Stop このサービスと、このサービスに依存しているすべてのサービスを停止します。
パブリック メソッド ToString  Component の名前を格納している String を返します (存在する場合)。このメソッドはオーバーライドできません。 (Component から継承されます。)
パブリック メソッド WaitForStatus オーバーロードされます。 サービスが指定したステータスになるまで、待機します。
プロテクト メソッドプロテクト メソッド
パブリック イベントパブリック イベント
参照参照

関連項目

ServiceController クラス
System.ServiceProcess 名前空間
ServiceBase クラス
ServiceControllerStatus
ServiceType



英和和英テキスト翻訳

英語⇒日本語日本語⇒英語

辞書ショートカット

すべての辞書の索引

「ServiceController」の関連用語

ServiceControllerのお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



ServiceControllerのページの著作権

   
日本マイクロソフト株式会社日本マイクロソフト株式会社
© 2026 Microsoft.All rights reserved.

©2026 GRAS Group, Inc.RSS