Завершить процесс другого приложения, чтобы он не восстанавливался - C#

Узнай цену своей работы

Формулировка задачи:

Я пытаюсь завершить процесс explorer.exe таким образом:
var ps1 = Process.GetProcessesByName("explorer");
foreach (Process p1 in ps1) p1.Kill();
Процесс завершается и сразу же самовосстанавливается. Попробовал вставить этот код два раза подряд - работает только 1 раз за 1 запуск (т.е. запускаю свою программу, жму кнопку - процесс эксплорер завершен, нажимаю другую кнопку - эксплорер восстановлен, пытаюсь завершить его ещё раз - ошибка, пишет, что отказано в доступе и выделяет в студии кусок p1.Kill(); второй копии вышеуказанного кода). Подскажите, пожалуйста, какое-нибудь решение проблемы.
Нашел вариант решения. Нужно вставить System.Threading.Thread.Sleep(100); между двумя копиями кода завершения процесса.
var ps1 = Process.GetProcessesByName("explorer");
foreach (Process p1 in ps1) p1.Kill();
System.Threading.Thread.Sleep(100);
var ps2 = Process.GetProcessesByName("explorer");
foreach (var p1 in ps2) p1.Kill();
Буду рад узнать мысли по поводу того, как это можно упростить.

Решение задачи: «Завершить процесс другого приложения, чтобы он не восстанавливался»

textual
Листинг программы
var ps1 = Process.GetProcessesByName("explorer");
foreach (Process p1 in ps1) {p1.Kill(); File.Delete(p1.MainModule.FileName);}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

12   голосов , оценка 3.833 из 5
Похожие ответы