Как обойти список системных процессов?

315
25 июня 2017, 13:34

Список процессов которые нужно обойти в цикле

var name = new List<string>
{
   "svchost", "csrss", "System", "wininit"
}

Пробую так:

var etc = Process.GetProcesses();
foreach (var anti in etc)
{
  foreach (var s in name)
  {
     if (name.IndexOf(anti.ProcessName.ToLower()) < 0)
     {
         anti.Kill();
     }
  }
}

Но выходит исключение:

Необработанное исключение типа "System.ComponentModel.Win32Exception" в System.dll

Что нужно исправить?

Answer 1

Попробуйте следующий код:

var names = new List<string> { "svchost", "csrss", "System", "wininit" };
var processes = Process.GetProcesses();
foreach (var process in processes)
{
    if (!names.Contains(process.ProcessName, StringComparer.OrdinalIgnoreCase))
    {
        process.Kill();
    }
}

PS: давайте нормальные имена вашим переменным. Все эти etc, anti, s - сами в них не путаетесь? Также учитывайте число: имён в коллекции подразумевается несколько, поэтому название должно быть names, а не name (даже если коллекция пустая).

Answer 2

Цикл foreach (var s in name) лишний, из за него Вы каждый процесс пытаетесь убыть 4 раза (столько элементов в списке):

var etc = Process.GetProcesses();
foreach (var anti in etc)
{
    if (name.IndexOf(anti.ProcessName.ToLower()) < 0)
    {
        anti.Kill();
    }
}  
READ ALSO
Обращения к свойствам файла из класса. ASP.Net

Обращения к свойствам файла из класса. ASP.Net

Здравствуйте! Помогите, пожалуйста, решить 2 вопроса

358
Нажатие кнопки при нажатии кнопки

Нажатие кнопки при нажатии кнопки

Как сделать так, чтобы при нажатии на кнопку, одновременно нажималась вторая кнопка?

510
Создание таблицы в RichTextBox

Создание таблицы в RichTextBox

Как создать таблицу в RichTextBox? Нужно чтобы по нажатию на Button создалась таблица 2x1, но если нажать на Enter (как и в Word) добавится еще одна строка,...

494
Хостинг для консольного приложения C#

Хостинг для консольного приложения C#

Здравствуйте! Я написал бота для соцсети, и теперь мне нужно где-то его хоститьПроблема в том, что я не могу разобраться где

263