Я использую приложение, которое запрашивает службы Windows, работающие на удаленных серверах, и записывает имя машины, имя службы и состояние в базу данных.
Тем не менее, я хочу также попытаться захватить тип запуска (автоматический, ручной, отключенный). Я использовал Service Controller, у которого нет опций для типа запуска, поэтому я начал смотреть на использование класса управления. Этот класс выглядит так, как будто в нем есть все, что мне нужно, но я не знаю, как использовать его на своих удаленных серверах. Для 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");
}
Но, конечно, это не сработало. Кто-нибудь знает, как я могу получить Услуги с удаленного компьютера, используя класс управления? Или есть другой способ использования Service Controller для получения типа запуска?
Я также пытался объединить их обоих и поместить оператор foreach класса управления в Service Controller, но он застрял в бесконечном цикле.