У меня есть цикл foreach, который перебирает все сервисы WMI, который ищет только определенные сервисы, которые содержат определенные ключевые слова для включения и исключения. Поэтому вы можете остановить определенные службы, которые содержат включенные и исключенные слова. К сожалению, я получаю эту ошибку в цикле foreach, в котором говорится, что невозможно преобразовать тип 'char' в 'System.Management.ManagementObject'. Надеюсь, вы, ребята, знаете. Спасибо за помощь.
public static void Test()
{
string include = "SQL";
string exclude = "EXPRESS, Writer";
string[] includeArray = include.Split(',');
string[] excludeArray = exclude.Split(',');
ConnectionOptions options = new ConnectionOptions();
//Scope that will connect to the default root for WMI
ManagementScope theScope = new ManagementScope(@"root\cimv2");
//Path created to the services with the default options
ObjectGetOptions option = new ObjectGetOptions(null, TimeSpan.MaxValue, true);
ManagementPath spoolerPath = new ManagementPath("Win32_Service");
ManagementClass servicesManager = new ManagementClass(theScope, spoolerPath, option);
using (ManagementObjectCollection services = servicesManager.GetInstances())
{
foreach (ManagementObject item in services.ToString().Where(x => includeArray.ToList().Any(a => x.ToString().Contains(a)) && !excludeArray.Any(a => x.ToString().Contains(a))))
{
if (item["Started"].Equals(true))
{
item.InvokeMethod("StopService", null);
}
}
}
}