C# 在网页中显示正在运行的服务

C# 在网页中显示正在运行的服务,c#,command-line,C#,Command Line,我需要能够从服务器获取服务,并将其显示在web页面中供测试人员检查,而不是让他们登录到远程服务器,打开服务并检查特定的服务 我已经研究了在命令行中使用tasklist、sc query甚至powershell中的get服务实现这一点的多种方法 我想做的是点击远程服务器并在网页中显示正在运行的服务。可以从c页面执行此操作吗?我相信您要查找的是ServiceController.GetServices(): 这将允许您获取计算机上所有服务的列表。还有一个重载也使用机器名:您可以在的帮助下执行此操作

我需要能够从服务器获取服务,并将其显示在web页面中供测试人员检查,而不是让他们登录到远程服务器,打开服务并检查特定的服务

我已经研究了在命令行中使用tasklist、sc query甚至powershell中的get服务实现这一点的多种方法


我想做的是点击远程服务器并在网页中显示正在运行的服务。可以从c页面执行此操作吗?

我相信您要查找的是
ServiceController.GetServices()


这将允许您获取计算机上所有服务的列表。还有一个重载也使用机器名:

您可以在的帮助下执行此操作,您可以使用
System.Management
命名空间,并通过浏览类尝试使用以下代码:


您的服务器是否基于窗口?是否检查了更新的代码?只需将其粘贴到
页面加载事件中
,然后tryYes,这台机器是基于Windows的。所以我可以将其放入aspx.cs页面加载事件中?我以前从未见过ManagementObjectSearcher。它可以正常工作以正确显示。我想知道的是,我是否可以将它定向到多个服务器以查找特定的服务?我假设可以通过在I dt.rows.Add之前检查特定名称来限制添加的行。如何将搜索更改为远程计算机?
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;
}