既存サービスとの通信の概要

更新 : 2007 年 11 月

ServiceController コンポーネントを使用して、既存サービスに接続したり、既存サービスの動作を制御できます。ServiceController コンポーネントのインスタンスを作成する場合は、特定の Windows サービスとやり取りするように設定します。これによって、コンポーネントのインスタンスを使用してサービスの起動や停止などの操作を行うことができるようになります。たとえば、ServiceController コンポーネントを作成し、Timer コンポーネントと連携させて定期的にサービスを起動したり停止できます。

ServiceController コンポーネントはさまざまな用途に適用できます。以下に例を示します。

  • 接続しているサービスの起動、停止、一時中断などのサービスが応答できる管理アクションをすべて実行できます。詳細については、「方法 : サービスに対して管理タスクを実行する」を参照してください。

  • コンポーネントとやり取りするサービスのさまざまなプロパティを問い合わせることで、プロパティの値を取得できます。たとえば、CanStop プロパティと CanPauseAndContinue プロパティの値を取得して、サービスの停止、一時中断、および継続ができるかどうかを判定できます。

  • 特定のコンピュータに存在するサービスの一覧を取得できます。

  • サービスに対して実行するカスタム コマンドを指定できます。カスタム コマンドの詳細については、MSDN オンラインを参照してください。

ServiceController コンポーネントは、アクションに対する要求をサービスそのものではなく、Services Control Manager に渡します。Services Control Manager では、その指示に従って、サービスの停止、起動、一時中断などのアクションを実行します。ServiceController は、Services Control Manager に要求を渡すと、Services Control Manager からサービスに要求が渡されるのを待たずに、すぐに制御を戻します。このため、例外処理を行う場合は、ServiceController クラスではなくサービス クラスそのもので行うことをお勧めします。

3wf385ab.alert_note(ja-jp,VS.90).gifメモ :

一般に、同じプロジェクトに含まれているサービスを操作するために ServiceController コンポーネントを Windows Service アプリケーションに追加することはお勧めできません。サービスを作成するプロジェクト内のコードでは、そのサービスを制御できません。ほかのコンテキストから制御する必要があります。

参照

処理手順

方法 : ServiceController コンポーネントのインスタンスを作成する

方法 : サービスに対して管理タスクを実行する

方法 : サービスの一覧を取得する

サービス マネージャのサンプル