我需要能够从服务器获取服务并将它们显示在网页中以供测试人员检查,而不是让他们登录远程服务器、打开服务并检查特定服务。
我已经研究了很多在命令行中使用 tasklist、sc 查询甚至是 powershell 中的 get-service 的方法。
我想做的是访问远程服务器并在网页中显示正在运行的服务。是否可以从 ac# 页面执行此操作?
我需要能够从服务器获取服务并将它们显示在网页中以供测试人员检查,而不是让他们登录远程服务器、打开服务并检查特定服务。
我已经研究了很多在命令行中使用 tasklist、sc 查询甚至是 powershell 中的 get-service 的方法。
我想做的是访问远程服务器并在网页中显示正在运行的服务。是否可以从 ac# 页面执行此操作?
我相信您正在寻找的是ServiceController.GetServices()
:
http://msdn.microsoft.com/en-us/library/hde9d63a.aspx
这将允许您获取机器上所有服务的列表。还有一个需要机器名称的重载:http: //msdn.microsoft.com/en-us/library/s21fd6th.aspx
您可以在WMI的帮助下做到这一点,您可以使用命名空间并通过浏览Win32_Service类System.Management
尝试使用以下代码:
DataTable dt = new DataTable();
dt.Columns.Add("Name");
dt.Columns.Add("InstallDate");
dt.Columns.Add("State");
dt.Columns.Add("ServiceType");
try
{
ManagementObjectSearcher searcher =
new ManagementObjectSearcher("root\\CIMV2",
"SELECT * FROM Win32_Service");
foreach (ManagementObject queryObj in searcher.Get())
{
DataRow dr = dt.NewRow();
dr["Name"] = queryObj["Name"];
dr["InstallDate"] = queryObj["InstallDate"];
dr["ServiceType"] = queryObj["ServiceType"];
dr["State"] = queryObj["State"];
dt.Rows.Add(dr);
}
GridView1.DataSource = dt;
GridView1.DataBind();
}
catch (ManagementException ex)
{
//"An error occurred while querying for WMI data: " + e.Message;
}