我一直在使用一个应用程序,查询远程服务器上运行的Windows服务,并将机器名称、服务名称和状态写入数据库。
我想尝试捕获启动类型(自动、手动、禁用),但是我的 Service Controller 没有任何启动类型选项,所以我开始查看使用 Management Class。这个类似乎具备我需要的一切,但我不知道如何针对我的远程服务器使用它。对于 Service Controller,我正在执行以下操作:
我想尝试捕获启动类型(自动、手动、禁用),但是我的 Service Controller 没有任何启动类型选项,所以我开始查看使用 Management Class。这个类似乎具备我需要的一切,但我不知道如何针对我的远程服务器使用它。对于 Service Controller,我正在执行以下操作:
ServiceController[] services = ServiceController.GetServices(serverIP);
foreach (ServiceController service in services)
{
var machine = service.MachineName;
var displayName = service.DisplayName;
var status = service.Status;
}
我在管理课上尝试了这个:
ManagementClass class1 = new ManagementClass(serverIP + "\\" + "Win32_Service");
foreach (ManagementObject ob in class1.GetInstances())
{
var machine = serverIP;
var displayName = ob.GetPropertyValue("Description");
var name = ob.GetPropertyValue("PathName");
var startMode = ob.GetPropertyValue("StartMode");
var status = ob.GetPropertyValue("State");
}
当然它并没有起作用。有人知道我如何使用管理类获取远程计算机的服务吗?或者是否有其他方法使用服务控制器来获取启动类型?
我还尝试将它们两个结合起来,将管理类foreach语句放在服务控制器中,但它陷入了无限循环。