2017-01-20 3 views
-4

Что я хочу сделать, это убить основной процесс explorer.exe (что приведет к автоматическому уничтожению Windows gui, а затем снова откроет gui. добиться этого путем ручного убийства, а затем начать процесс с помощью диспетчера задач, но я не могу понять, как убить основной процесс проводника из визуальной программы на C# wpf. Кроме того, я попытался убить его из taskmanager, а затем снова запустить gui windows по:.?WPF: Убейте Windows GUI (explorer.exe), а затем восстановите его

var proc = new Process 
      { 
       StartInfo = new ProcessStartInfo 
       { 
        FileName = "explorer.exe", 
        Arguments = "", 
        UseShellExecute = true, 
        CreateNoWindow = true 
       } 
      }; 
      proc.Start(); 

но это только начинается новое окно проводника, а не графический интерфейс пользователя Windows Может кто-то помочь мне убить выиграть графический интерфейс и запустить его снова с какой-то код, пожалуйста

+2

Зачем вы хотите это сделать? Это несколько враждебный пользователю, и я не был бы рад использовать приложение, которое это делало. Кстати, что вы подразумеваете под «windows gui» - открываете окна браузера? Панель задач? – stuartd

+0

Пользователи Windows время от времени могут иметь повод для программного «kill windows gui», все время играя с богатыми ошибками играми. Я никогда не думал автоматизировать его для себя, питти. –

+0

@stuartd Основная цель этого приложения - сделать это –

ответ

0

Наконец-то мне удалось найти решение: убить explorer.exe, получив этот процесс и используя Kill(), только перезапустил gui. Чтобы полностью отключить его, используйте

 var proc = new Process 
     { 
      StartInfo = new ProcessStartInfo 
      { 
       FileName = "taskkill.exe", 
       Arguments = "/F /IM explorer.exe", 
       UseShellExecute = true, 
       CreateNoWindow = true 
      } 
     }; 
     proc.Start(); 
2

Вы можете получить процессы по имени с помощью:

var explorerProcesses = Process.GetProcessesByName("explorer"); 

Затем вы можете перебрать и убить их всех:

foreach(var process in explorerProcesses) 
{ 
    process.Kill() 
} 

Вашей программе может понадобиться работать в качестве администратора, чтобы убить исследователь, я не уверен.

+0

Вы были правы в первый раз, вы используете дружественное к процессу имя, которое является 'explorer', а не' explorer.exe': 'var explorerProcesses = Process.GetProcessesByName (" explorer ") ; ' – Quantic

+0

woops, мой плохой, извините! – Blam

+0

Спасибо! Но как насчет восстановления GUI? Запуск explorer.exe с кодом, который я дал в первом сообщении, открывает только проводник Windows, и GUI (панель задач) по-прежнему не отображается ... –

Смежные вопросы