2013-09-14 7 views
3

Странно, но, возможно, я обрабатываю его неправильно - мне нужно просто проверить, работает ли explorer.exe, и если он его убьет. Однако, как я это делаю, explorer.exe просто перезапускается после того, как я его убью.Kill Explorer process

Нормальный taskkill через пакет работает отлично, хотя C# делает что-то другое?

private void Form1_Load(object sender, EventArgs e) 
{ 
    Process[] prcChecker = Process.GetProcessesByName("explorer"); 
    if (prcChecker.Length > 0) 
    { 
     MessageBox.Show("Explorer running"); 
     foreach (Process p in prcChecker) 
     { 
      p.Kill(); 
     } 
    } 
    else 
    { 
     MessageBox.Show("Explorer is not running"); 
    } 
} 
+0

Это дубликатом вопрос! Решение: http://superuser.com/questions/511914/why-does-explorer-restart-automatically-when-i-kill-it-with-process-kill – olydis

+0

Как этот материал суперпользователя? Это C# .... Я получаю нисходящий рейтинг за то, что не смотрел на неправильный сайт :( – PnP

+0

действительно;), но эй, они ответили на него :) – olydis

ответ

2

Это потому, что Windows заботится о перезапуске explorer.exe, если это произойдет, чтобы умереть.

Можно отложить это поведение (например, настройка черепахи делает это, например), но это не рекомендуется - пользователи будут злиться.

1

Хотя не C#, но вы также можете попытаться установить ключ реестра HKLM\Software\Microsoft\Windows NT\CurrentVersion\Winlogon\AutoRestartShell на 0, чтобы остановить автоматический перезапуск.

EDIT: -

Попробуйте это в C#: -

RegistryKey ourKey = Registry.LocalMachine; 
ourKey = ourKey.OpenSubKey(@"SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon", true); 
ourKey.SetValue("AutoRestartShell", 0); 
Смежные вопросы