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

更新 : 2007 年 11 月

ServiceController クラスの GetServices メソッドを使用して、特定のコンピュータにあるサービスの一覧を取得できます。GetServices メソッドは、1 台のコンピュータで利用できるすべてのサービスの配列を返します。ただし、デバイス ドライバ関連のサービスは除きます。デバイス ドライバ サービスは、GetDevices メソッドで取得できます。

これらのメソッドには、情報収集対象のコンピュータを指定します。パラメータを指定しないで実行した場合は、ローカル コンピュータにあるサービスの一覧を取得します。

サービスの一覧を取得するには

  1. 問い合わせの結果を格納する ServiceController 型の配列を作成します。

  2. ServiceController クラスのメソッドを呼び出して、配列に結果を設定します。次のいずれかの形式で実行します。

    • デバイス ドライバ以外のサービスの一覧をローカル コンピュータから取得するには、パラメータを指定せずに GetServices メソッドを呼び出します。

      Dim services() As System.ServiceProcess.ServiceController
      services = System.ServiceProcess.ServiceController.GetServices()
      
           System.ServiceProcess.ServiceController[] services;
              services = System.ServiceProcess.ServiceController.GetServices();
      
      System.ServiceProcess.ServiceController services[];
      services = System.ServiceProcess.ServiceController.GetServices();
      
    • デバイス ドライバ以外のサービスの一覧を特定のコンピュータから取得するには、GetServices メソッドを呼び出し、パラメータに対象のコンピュータを文字列で指定します。

      Dim services() As System.ServiceProcess.ServiceController
      services = System.ServiceProcess.ServiceController.GetServices( _
         "machinename")
      
           System.ServiceProcess.ServiceController[] services;
              services = System.ServiceProcess.ServiceController.GetServices(
                 "machinename");
      
    • デバイス ドライバ サービスの一覧をローカル コンピュータから取得するには、パラメータを指定せずに GetDevices メソッドを呼び出します。

      Dim services() As System.ServiceProcess.ServiceController
      services = System.ServiceProcess.ServiceController.GetDevices()
      
           System.ServiceProcess.ServiceController[] services;
              services = System.ServiceProcess.ServiceController.GetDevices();
      
      
    • デバイス ドライバ サービスの一覧を特定のコンピュータから取得するには、GetDevices メソッドを呼び出し、対象のコンピュータをパラメータに文字列で指定します。

      Dim services() As System.ServiceProcess.ServiceController
      services = System.ServiceProcess.ServiceController.GetDevices( _
         "machinename")
      
           System.ServiceProcess.ServiceController[] services;
              services = System.ServiceProcess.ServiceController.GetDevices(
                 "machinename");
      

    次のコードは、ローカル コンピュータ上にあるサービスの一覧を取得し、各サービスの情報をリスト ボックスに表示する方法を示しています。GetServices メソッドは ServiceController オブジェクトの配列を返すということに注意してください。返された個々の ServiceController は、対象のコンピュータ上にある 1 つのサービスを表します。

    Sub ListServices()
        Dim ListBox1 As ListBox
    
        Dim services() As System.ServiceProcess.ServiceController
        Dim i As Integer
        services = System.ServiceProcess.ServiceController.GetServices()
        ListBox1.Items.Clear()
        For i = 0 To services.Length - 1
            ListBox1.Items.Add(services(i).ServiceName)
        Next
    End Sub
    
     private void ListServices()
        {
            ListBox listBox1 = null;
    
            System.ServiceProcess.ServiceController[] services;
            services = System.ServiceProcess.ServiceController.GetServices();
            listBox1.Items.Clear();
            for (int i = 0; i < services.Length; i++)
            {
                listBox1.Items.Add(services[i].ServiceName);
            }
        }
    

このコードの例は、Visual Basic IntelliSense コード スニペットとしても利用できます。コード スニペット ピッカーでは、これは [Windows Operating System] の [Windows Services] にあります。詳細については、「方法 : コードにスニペットを挿入する (Visual Basic)」を参照してください。

参照

処理手順

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

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

概念

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