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

更新:2007 年 11 月

可以使用 ServiceController 元件,連接並控制現有服務的行為。您建立 ServiceController 類別的執行個體時,會將其屬性設定為可與某一特定 Windows 服務進行互動。然後,您可以使用此類別開始、停止或者操作服務。

您很可能會以管理身分使用 ServiceController。例如,可以建立透過 ServiceController 元件執行個體傳送自訂命令到服務的 Windows 或 ASP.NET Web 應用程式。由於服務控制管理員不支援自訂命令,因此這可能很實用。

您有幾種方式可以建立 ServiceController 元件的執行個體:

  • 可以從 [工具箱] 的 [元件] 索引標籤,將 ServiceController 元件的執行個體拖曳至表單或其他設計工具上。

  • 可以從 [伺服器總管] 將 ServiceController 元件加入至設計工具。

  • 可以在程式碼中建立 ServiceController 類別的執行個體。

在建立 ServiceController 執行個體後,您必須在該執行個體上設定兩種屬性以識別與其進行互動的服務:電腦名稱,以及您要控制之服務的名稱。

注意事項:

按照預設,MachineName 會設定為本機電腦,除非您想將元件執行個體設定為指向另一部電腦,否則不需更改。

注意事項:

根據目前使用的設定與版本,您所看到的對話方塊與功能表命令可能會與 [說明] 中所描述的不同。若要變更設定,請從 [工具] 功能表中選擇 [匯入和匯出設定]。如需詳細資訊,請參閱 Visual Studio 設定

若要從伺服器總管建立並設定 ServiceController 元件

  1. 在 [伺服器總管] 中,加入您要使用且沒有列在其中的伺服器。如需詳細資訊,請參閱 HOW TO:存取及初始化伺服器總管/資料庫總管

  2. 展開 [服務] 節點,找出您希望對它執行管理性工作的服務。

  3. 以滑鼠右鍵按一下服務名稱,然後按一下 [加入至設計工具]。

    ServiceController 元件會出現在您的專案中,設定為與所選取的服務互動。

若要從工具箱建立及設定 ServiceController 元件

  1. 存取 [工具箱] 的 [元件] 索引標籤。

  2. 選取 ServiceController 圖示,並拖曳到表單或元件的設計工具介面上。

  3. 設定下列屬性。

    屬性

    設定

    MachineName

    服務存在的電腦名稱,或者以 "." 代表本機電腦。

    ServiceName

    您想要互動的服務名稱。

    秘訣

    您可以使用 [伺服器總管],來查看某特定服務的 [ServiceName] 應設定成什麼。選取 [伺服器總管] 中您有興趣的服務,其 [ServiceName] 會出現在 [屬性] 視窗中。

若要以程式設計方式來建立及設定 ServiceController 元件

  1. 在程式碼中建立 ServiceController 類別的執行個體。

  2. 設定 MachineNameServiceName 屬性,以指出您要控制的服務。

    下列範例會顯示如何建立與本機電腦之 IIS Admin 服務進行互動的 ServiceController 元件。接著元件將查詢與控制程式相關的服務來決定是否接受「停止」命令,若接受,則發出命令。本範例是 Windows 專案的一部分,在專案中使用有不同按鈕的表單來開始、停止及操作服務。每次按下按鈕時,將評估條件並在標籤控制項顯示狀態資訊。

    注意事項:

    在執行這些範例之前,您必須先加入對 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.");
            }
        }
    

請參閱

工作

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

HOW TO:擷取服務清單

概念

與現有服務通訊的簡介