public static ServiceControllerExCollection GetServices(ServiceQueryType serviceQueryType, string machineName) { if ((machineName.Length == 0) || (machineName == "localhost")) { machineName = System.Net.Dns.GetHostName(); } if (serviceQueryType == ServiceQueryType.ServiceProcess) { ServiceControllerExCollection list = new ServiceControllerExCollection(); try { list.AddRange ( ( from ServiceController myController in ServiceController.GetServices(machineName) select new ServiceControllerExSp(myController) ).ToArray() ); } catch (System.InvalidOperationException invalidEx) { if (invalidEx.Message.Contains("Cannot open Service Control Manager on computer")) { string fullDNSName = System.Net.Dns.GetHostEntry(machineName).HostName; list.AddRange ( ( from ServiceController myController in ServiceController.GetServices(fullDNSName) select new ServiceControllerExSp(myController) ).ToArray() ); } else { throw; } } return(list); } else if (serviceQueryType == ServiceQueryType.WMI) { return(ServiceControllerExWMI.GetServices(machineName, false, "", "")); } else { return(ServiceControllerExMix.GetServices(machineName, false, "", "")); } }
public static ServiceControllerExCollection GetServices(string machineName, bool impersonate, string user, string pass) { ServiceControllerExCollection list = new ServiceControllerExCollection(); if ((machineName.Length == 0) || (machineName == "localhost")) { machineName = "."; } ManagementObjectCollection servicesQuery = GetServiceCollection(machineName, impersonate, user, pass); foreach (ManagementObject mo in servicesQuery) { list.Add(new ServiceControllerExWMI(mo)); } return(list); }