方法 : ServiceController コンポーネントのインスタンスを作成する
更新 : 2007 年 11 月
ServiceController コンポーネントを使用して、既存サービスに接続したり、既存サービスの動作を制御できます。ServiceController クラスのインスタンスを作成する場合は、特定の Windows サービスとやり取りするようにプロパティを設定します。これによって、クラスを使用したサービスの起動や停止などの操作ができるようになります。
ServiceController は、管理権限で使用することが最も多いコンポーネントです。たとえば、ServiceController コンポーネントのインスタンスを通じてカスタム コマンドをサービスに送る Windows アプリケーションまたは ASP.NET Web アプリケーションを作成できます。Services Control Manager はカスタム コマンドをサポートしていないため、この方法が便利です。
ServiceController コンポーネントのインスタンスを作成するには、次の方法があります。
[ツールボックス] の [コンポーネント] タブから、フォームなどのデザイナに ServiceController コンポーネントのインスタンスをドラッグします。
サーバー エクスプローラを使って、ServiceController コンポーネントをデザイナに登録します。
ServiceController クラスのインスタンスをコードで作成します。
ServiceController のインスタンスを作成した後、やり取りするサービスを識別するために、コンピュータ名と制御対象サービス名の 2 種類のプロパティを設定する必要があります。
メモ : |
---|
MachineName には、既定でローカル コンピュータ名が設定されます。他のコンピュータを対象とするコンポーネント インスタンスを作成する場合以外は、この設定を変更する必要はありません。 |
メモ : |
---|
使用している設定またはエディションによっては、表示されるダイアログ ボックスやメニュー コマンドがヘルプに記載されている内容と異なる場合があります。設定を変更するには、[ツール] メニューの [設定のインポートとエクスポート] をクリックします。詳細については、「Visual Studio の設定」を参照してください。 |
サーバー エクスプローラで ServiceController コンポーネントを作成および設定するには
サーバー エクスプローラ の一覧に目的のサーバーがない場合は追加します。詳細については、「方法 : サーバー エクスプローラ/データベース エクスプローラにアクセスして初期化する」を参照してください。
[サービス] ノードを展開し、管理タスクを実行するサービスを検索します。
サービス名を右クリックし、[デザイナに追加] をクリックします。
選択したサービスとやり取りするように設定された ServiceController コンポーネントがプロジェクトに表示されます。
ツールボックスで ServiceController コンポーネントを作成および設定するには
[ツールボックス] の [コンポーネント] タブを表示します。
[ServiceController] アイコンをクリックし、フォームまたはコンポーネントのデザイン画面にドラッグします。
次のプロパティを設定します。
プロパティ
設定値
MachineName
サービスが存在するコンピュータ名を指定するか、ローカル コンピュータを示す "." を指定します。
ServiceName
やり取りするサービス名を指定します。
ヒント : サーバー エクスプローラ を使用して、ServiceName に設定する値をサービスごとに調べることができます。サーバー エクスプローラ で任意のサービスを選択すると、そのサービスの ServiceName の値が [プロパティ] ウィンドウに表示されます。
プログラムを使用して、ServiceController コンポーネントを作成および設定するには
コードで ServiceController クラスのインスタンスを作成します。
MachineName プロパティと ServiceName プロパティを設定して、制御するサービスを指定します。
次の例は、ローカル コンピュータ上の IIS Admin サービスとやり取りする ServiceController コンポーネントを作成する方法を示しています。このコンポーネントでは、コントローラに関連付けられたサービスの問い合わせを行って、Stop コマンドの受け付けが可能かどうかを調べます。受け付け可能の場合は、Stop コマンドを実行します。この例は、さまざまなボタンを配置したフォームを使用してサービスの起動や停止などの操作を行う 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."); } }