HOW TO:擷取服務清單

更新:2007 年 11 月

您可以使用 ServiceController 類別的 GetServices 方法,來擷取某一特定電腦的服務清單。GetServices 方法會傳回電腦所有可用的服務,但與裝置驅動程式 (Device Driver) 關聯的服務則不會傳回。您可以使用 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 代表正在查詢之電腦上的一項服務:

    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 作業系統] > [Windows 服務] 中。如需詳細資訊,請參閱 HOW TO:在您的程式碼中插入程式碼片段 (Visual Basic)

請參閱

工作

HOW TO:建立 ServiceController 元件執行個體

HOW TO:執行服務的管理工作

概念

與現有服務通訊的簡介