HOW TO:建立 ServiceController 元件執行個體
更新:2007 年 11 月
可以使用 ServiceController 元件,連接並控制現有服務的行為。您建立 ServiceController 類別的執行個體時,會將其屬性設定為可與某一特定 Windows 服務進行互動。然後,您可以使用此類別開始、停止或者操作服務。
您很可能會以管理身分使用 ServiceController。例如,可以建立透過 ServiceController 元件執行個體傳送自訂命令到服務的 Windows 或 ASP.NET Web 應用程式。由於服務控制管理員不支援自訂命令,因此這可能很實用。
您有幾種方式可以建立 ServiceController 元件的執行個體:
可以從 [工具箱] 的 [元件] 索引標籤,將 ServiceController 元件的執行個體拖曳至表單或其他設計工具上。
可以從 [伺服器總管] 將 ServiceController 元件加入至設計工具。
可以在程式碼中建立 ServiceController 類別的執行個體。
在建立 ServiceController 執行個體後,您必須在該執行個體上設定兩種屬性以識別與其進行互動的服務:電腦名稱,以及您要控制之服務的名稱。
注意事項: |
---|
按照預設,MachineName 會設定為本機電腦,除非您想將元件執行個體設定為指向另一部電腦,否則不需更改。 |
注意事項: |
---|
根據目前使用的設定與版本,您所看到的對話方塊與功能表命令可能會與 [說明] 中所描述的不同。若要變更設定,請從 [工具] 功能表中選擇 [匯入和匯出設定]。如需詳細資訊,請參閱 Visual Studio 設定。 |
若要從伺服器總管建立並設定 ServiceController 元件
在 [伺服器總管] 中,加入您要使用且沒有列在其中的伺服器。如需詳細資訊,請參閱 HOW TO:存取及初始化伺服器總管/資料庫總管。
展開 [服務] 節點,找出您希望對它執行管理性工作的服務。
以滑鼠右鍵按一下服務名稱,然後按一下 [加入至設計工具]。
ServiceController 元件會出現在您的專案中,設定為與所選取的服務互動。
若要從工具箱建立及設定 ServiceController 元件
存取 [工具箱] 的 [元件] 索引標籤。
選取 ServiceController 圖示,並拖曳到表單或元件的設計工具介面上。
設定下列屬性。
屬性
設定
MachineName
服務存在的電腦名稱,或者以 "." 代表本機電腦。
ServiceName
您想要互動的服務名稱。
秘訣 您可以使用 [伺服器總管],來查看某特定服務的 [ServiceName] 應設定成什麼。選取 [伺服器總管] 中您有興趣的服務,其 [ServiceName] 會出現在 [屬性] 視窗中。
若要以程式設計方式來建立及設定 ServiceController 元件
在程式碼中建立 ServiceController 類別的執行個體。
設定 MachineName 和 ServiceName 屬性,以指出您要控制的服務。
下列範例會顯示如何建立與本機電腦之 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."); } }