我正在尝试查看字符串数组中多个服务的状态。
该服务可能并不总是存在于我将使用它的机器上,因此try
代码:
public string[] service = { "MSSQL$AMTECHFASTTEST", "SQLBrowser" };
public void stopService()
{
int i = 0;
ServiceController[] scServices;
scServices = ServiceController.GetServices(service[i]);
try
{
foreach (ServiceController services in scServices)
{
MessageBox.Show(service[i]+" " + services.Status.ToString(), "Service Status");
i++;
}
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString(), "Error");
}
}
我认为导致错误的是ServiceController.GetServices(service[i])
行,但我无法解决。
谢谢,
答案 0 :(得分:2)
ServiceController.GetServices(string machineName)
方法检索在主机 machineName
上运行的服务。
如果您想获取与程序在相同计算机上运行的服务,请使用不带参数的ServiceController.GetServices()
。
所以我认为你想要做的是这样的事情:
public string[] wantedServices = { "MSSQL$AMTECHFASTTEST", "SQLBrowser" };
public void stopService()
{
ServiceController[] services = ServiceController.GetServices()
.Where(svc => wantedServices.Contains(svc.ServiceName))
.ToArray();
try
{
foreach (ServiceController svc in services)
{
MessageBox.Show($"{svc.ServiceName} {svc.Status}", "Service Status");
}
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString(), "Error");
}
}
这将获取当前计算机上包含wantedServices
数组中名称的所有服务(为清楚起见,我更改了一些变量名称)。