ServiceControllerクラスを利用すると、PC上で実行されているサービスにアクセスすることができます。
以下のサンプルでは、サービスの一覧をそのサービスの状態と一緒に表示します。
-------------------------------------------------------
using System;
using System.ServiceProcess;
class ServiceList
{
static void Main()
{
ServiceController[] services=ServiceController.GetServices();
foreach(ServiceController x in services)
{
Console.WriteLine("{0, 10}:{1}", x.Status, x.DisplayName);
}
}
}
-------------------------------------------------------
サービスの停止、開始の操作を行うことも可能です。
以下のサンプルではIISのリスタートを行います。
-------------------------------------------------------
using System;
using System.ServiceProcess;
class WebServiceRestart
{
static void Main()
{
ServiceController[] services=ServiceController.GetServices();
foreach(ServiceController x in services)
{
if(x.ServiceName=="W3SVC")
{
Console.WriteLine("{0}:{1}", x.Status, x.DisplayName);
if(x.CanStop)
x.Stop();
x.WaitForStatus(ServiceControllerStatus.Stopped);
Console.WriteLine("{0}:{1}", x.Status, x.DisplayName);
x.Start();
x.WaitForStatus(ServiceControllerStatus.Running);
Console.WriteLine("{0}:{1}", x.Status, x.DisplayName);
}
}
}
}
-------------------------------------------------------
あおい情報システム株式会社 小野修司(どっとねっとふぁん)