Dlaczego explorer restartuje się automatycznie, gdy zabiję go za pomocą Process.Kill?

1

Jeśli zabiję explorer.exe w ten sposób:

private static void KillExplorer()
{
    var processes = Process.GetProcessesByName("explorer");
    Console.Write("Killing Explorer... ");
    foreach (var process in processes)
    {
        process.Kill();
        process.WaitForExit();
    }
    Console.WriteLine("Done");
}

Natychmiast uruchamia się ponownie.

Ale jeśli użyję taskkill /F /IM explorer.exelub zabij go z menedżera zadań, nie uruchamia się ponownie.

Dlaczego? Co za różnica? Jak mogę zamknąć explorer.exe z kodu bez ponownego uruchamiania? Jasne, mogłem zadzwonić do taskkill z mojego kodu, ale miałem nadzieję na czystsze rozwiązanie ...

Thomas Levesque
źródło
1
Jakiej wersji systemu Windows używasz?
t3hn00b
Próbujesz napisać aplikację kiosku?
Jodrell
@ t3hn00b, wypróbowałem go na XP i 7, z tymi samymi wynikami.
Thomas Levesque
@ DanBarzilay, zaakceptowana odpowiedź na to pytanie nie działa, a pozostałe nie są zbyt pomocne. Proszę nie zamykać.
Thomas Levesque

Odpowiedzi:

4

Nie mogę powiedzieć, że nie zdradziłem odpowiedzi. Wszystkie kredyty trafiają do morguth za jego stanowisko tutaj .

To, co zasugerował (i udowodni, że działa na moim Trybie Win7 i XP), polega na tym, że istnieje klucz rejestru, który zmusza powłokę do automatycznego ponownego uruchomienia. Używając następującego kodu, wyłączasz to.

RegistryKey ourKey = Registry.LocalMachine;
ourKey = ourKey.OpenSubKey(@"SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon", true);
ourKey.SetValue("AutoRestartShell", 0);
// Kill the explorer by the way you've post and do your other work
ourKey.SetValue("AutoRestartShell", 1)
t3hn00b
źródło
Dziękuję za odpowiedź. Widziałem tego posta wcześniej, ale nie wydaje mi się to zbyt dobrym pomysłem na zmianę ustawienia całego systemu tylko dla akcji jednorazowej. Co się stanie, jeśli dojdzie do awarii po ustawieniu wartości 0 i ustawieniu jej z powrotem na 1?
Thomas Levesque
@ThomasLevesque dobrze mój dom Win ma tę opcję wyłączoną (ustawioną na 0), dlatego zapytałem o wersję systemu Windows (myślałem, że jest to wersja specyficzna). Myślę więc, że nic się nie stanie, ale sam możesz to przetestować - wyszukiwanie googli nie wykazało żadnych dziwnych zachowań. Instalator sterownika NVidia zabija eksploratora podczas instalowania nowych sterowników, więc jeśli to zrobią (i prawdopodobnie robią to mniej więcej w ten sam sposób), wątpię, aby zdarzyło się coś naprawdę niebezpiecznego. Jednak to zależy od Ciebie i Twoich wymagań.
t3hn00b