Service Management in C#.NET(C#.NET的服务管理器)
这是我翻译的第二篇文章,相对前一篇(Introducing ASP.NET 2.0 (ASP.NET 2.0 简介) )而言自我感觉好了很多,但还有不足,在以后的翻译中,还需改正.
C#.NET的服务管理器
作者:Sateesh Kumar 2006-5-31
译者:Sparon 2006-5-31
这篇章将会交你如何创建Web应用程序来管理机器上的服务。
原文地址:http://www.c-sharpcorner.com/UploadFile/satisharveti/tocontrolservicesrunninginasystem05302006100035AM/tocontrolservicesrunninginasystem.aspx
大家知道有许多后台运行的程序是不为我们所知的,我们可以通过开始菜单中的运行services.msc来查看这些服务.
我将说明如何创建一个Web应用程序来管理机器上的服务。这个程序允许我们查看我们电脑上所有的服务,并且可以运行、停止或暂停服务。它还可以查看所有服务的详细信息,比如路径、状态。这个程序可以在VS.NET 2003中创建。
首先创建一个C#web应用程序。命名为ServiceMgmt
页面如下:
在这个页面中有4个超级链接、1个dropdownlist和7个labels 。
如图所示在解决方案管理器中添加System.Management关联。
下一步:
将这些代码添加到Page_Load事件中:
ManagementClass class1=new ManagementClass("Win32_Service");
foreach(ManagementObject ob in class1.GetInstances())
{
ListItem item1=new ListItem();
item1.Text =ob.GetPropertyValue("Name").ToString();
item1.Value =ob.GetPropertyValue("Caption").ToString();
DropDownList1.Items.Add(item1);
}
这段代码将加载机器上的所有服务到ComboBox中。
继续添加方法:
private void showstatus()
{
int i=0;
ManagementClass class1=new ManagementClass("Win32_Service");
foreach(ManagementObject ob in class1.GetInstances())
{
if(ob.GetPropertyValue("State").ToString()=="Running")
{
i++;
}
if(ob.GetPropertyValue("Name").ToString()==DropDownList1.SelectedItem.Text.ToString())
{
Label2.Text ="Description : " +ob.GetPropertyValue("Description");
Label3.Text ="PathName : "+ob.GetPropertyValue("PathName");
Label4.Text ="ServiceType : " +ob.GetPropertyValue("ServiceType");
Label5.Text ="StartMode : "+ ob.GetPropertyValue("StartMode");
Label6.Text ="State : "+ob.GetPropertyValue("State");
}
}
Label7.Text =string.Empty;
Label7.Text ="Total Number of Services Running : " +i;
}
这段代码实现将你选择的服务的详细信息显示出来。
继续添加方法:
private void servicemgmt(string status)
{
ManagementPath path=new ManagementPath();
path.Server=System.Environment.MachineName;
path.NamespacePath=@"root\CIMV2";
path.RelativePath="Win32_service.Name='"+DropDownList1.SelectedItem.Text.ToString()+"'";
ManagementObject service=new ManagementObject(path);
ManagementBaseObject temp= service.InvokeMethod(status,null,null);
}
这段代码实现运行、停止或暂停、继续服务。
拷贝这段代码到Start LinkButton_Click事件:
servicemgmt("StartService");
showstatus();
拷贝这段代码到Stop LinkButton_Click事件:
servicemgmt("StopService");
showstatus();
拷贝这段代码到Pause LinkButton_Click事件:
servicemgmt("PauseService");
showstatus();
拷贝这段代码到Continue LinkButton_Click事件:
servicemgmt("ResumeService");
showstatus();
到此为止,我们就可以通过IE控制我们机器上的服务了。
我希望这段代码对大家有帮助. 最后的结果会是这样的:
全文代码下载:ServiceMgmt.rar
附:wmiopennotepad.rar