我一直在使用一个应用程序来查询远程服务器上运行的 Windows 服务并将机器名称、服务名称和状态写入数据库。
但是,我也想尝试捕获启动类型(自动、手动、禁用)。我使用的是没有任何启动类型选项的服务控制器,所以我开始考虑使用管理类。这个类看起来有我需要的一切,但我不知道如何在我的远程服务器上使用它。对于服务控制器,我这样做:
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 语句放在服务控制器中,但它陷入了无限循环。