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

更新 : 2007 年 11 月

ServiceController コンポーネントを使用して、既存サービスに接続したり、既存サービスの動作を制御できます。ServiceController クラスのインスタンスを作成する場合は、特定の Windows サービスとやり取りするようにプロパティを設定します。これによって、クラスを使用したサービスの起動や停止などの操作ができるようになります。

ServiceController は、管理権限で使用することが最も多いコンポーネントです。たとえば、ServiceController コンポーネントのインスタンスを通じてカスタム コマンドをサービスに送る Windows アプリケーションまたは ASP.NET Web アプリケーションを作成できます。Services Control Manager はカスタム コマンドをサポートしていないため、この方法が便利です。

ServiceController コンポーネントのインスタンスを作成するには、次の方法があります。

  • [ツールボックス] の [コンポーネント] タブから、フォームなどのデザイナに ServiceController コンポーネントのインスタンスをドラッグします。

  • サーバー エクスプローラを使って、ServiceController コンポーネントをデザイナに登録します。

  • ServiceController クラスのインスタンスをコードで作成します。

ServiceController のインスタンスを作成した後、やり取りするサービスを識別するために、コンピュータ名と制御対象サービス名の 2 種類のプロパティを設定する必要があります。

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

MachineName には、既定でローカル コンピュータ名が設定されます。他のコンピュータを対象とするコンポーネント インスタンスを作成する場合以外は、この設定を変更する必要はありません。

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

使用している設定またはエディションによっては、表示されるダイアログ ボックスやメニュー コマンドがヘルプに記載されている内容と異なる場合があります。設定を変更するには、[ツール] メニューの [設定のインポートとエクスポート] をクリックします。詳細については、「Visual Studio の設定」を参照してください。

サーバー エクスプローラで ServiceController コンポーネントを作成および設定するには

  1. サーバー エクスプローラ の一覧に目的のサーバーがない場合は追加します。詳細については、「方法 : サーバー エクスプローラ/データベース エクスプローラにアクセスして初期化する」を参照してください。

  2. [サービス] ノードを展開し、管理タスクを実行するサービスを検索します。

  3. サービス名を右クリックし、[デザイナに追加] をクリックします。

    選択したサービスとやり取りするように設定された ServiceController コンポーネントがプロジェクトに表示されます。

ツールボックスで ServiceController コンポーネントを作成および設定するには

  1. [ツールボックス] の [コンポーネント] タブを表示します。

  2. [ServiceController] アイコンをクリックし、フォームまたはコンポーネントのデザイン画面にドラッグします。

  3. 次のプロパティを設定します。

    プロパティ

    設定値

    MachineName

    サービスが存在するコンピュータ名を指定するか、ローカル コンピュータを示す "." を指定します。

    ServiceName

    やり取りするサービス名を指定します。

    sywbez17.alert_note(ja-jp,VS.90).gifヒント :

    サーバー エクスプローラ を使用して、ServiceName に設定する値をサービスごとに調べることができます。サーバー エクスプローラ で任意のサービスを選択すると、そのサービスの ServiceName の値が [プロパティ] ウィンドウに表示されます。

プログラムを使用して、ServiceController コンポーネントを作成および設定するには

  1. コードで ServiceController クラスのインスタンスを作成します。

  2. MachineName プロパティと ServiceName プロパティを設定して、制御するサービスを指定します。

    次の例は、ローカル コンピュータ上の IIS Admin サービスとやり取りする ServiceController コンポーネントを作成する方法を示しています。このコンポーネントでは、コントローラに関連付けられたサービスの問い合わせを行って、Stop コマンドの受け付けが可能かどうかを調べます。受け付け可能の場合は、Stop コマンドを実行します。この例は、さまざまなボタンを配置したフォームを使用してサービスの起動や停止などの操作を行う Windows プロジェクトの一部です。ボタンがクリックされるたびに、条件が評価され、ラベル コントロールにステータス情報が表示されます。

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

    これらのサンプルを実行する前に、System.ServiceProcess.dll への参照を追加し、System.ServiceProcess 名前空間についての Imports ステートメントまたは using ステートメントを含める必要があります。

    Sub Main()
        Dim myController As _
           New System.ServiceProcess.ServiceController("IISAdmin")
    
        If myController.CanStop Then
            Debug.WriteLine(myController.ServiceName & " can be stopped.")
        Else
            Debug.WriteLine(myController.ServiceName & " cannot stop.")
        End If
    End Sub
    
     public static void Main(string[] args)
        {
            System.ServiceProcess.ServiceController myController =
               new System.ServiceProcess.ServiceController("IISAdmin");
            if (myController.CanStop)
            {
                System.Diagnostics.Debug.WriteLine(
                   myController.DisplayName + "  can be stopped.");
            }
            else
            {
                System.Diagnostics.Debug.WriteLine(
                   myController.DisplayName + "  cannot stop.");
            }
        }
    

参照

処理手順

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

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

概念

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