2017-01-20 86 views
-4

我想要做的就是殺死explorer.exe主進程(這將導致以編程方式殺死Windows GUI,然後再次打開GUI。通過任務管理器手動殺死然後啓動進程,但是我不知道如何從wpf visual C#程序中殺死主瀏覽器進程,並且我試圖從taskmanager中殺死它,然後再次啓動windows gui通過:?WPF:殺死Windows圖形用戶界面(explorer.exe),然後恢復它

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

但只啓動一個新的瀏覽器窗口,而不是Windows GUI的人可以幫我殺贏GUI和一些代碼再次啓動它,請

+2

爲什麼要這樣做?這有點用戶敵對,我不會很高興使用這樣做的應用程序。順便說一句,「windows gui」是什麼意思 - 打開資源管理器窗口?任務欄? – stuartd

+0

Windows用戶不時可能有理由以編程方式「殺死windows gui」,這種情況一直在發生。我從來沒有想過爲自己自動化,可憐。 –

+0

@stuartd這個應用程序的主要目標是做到這一點 –

回答

0

我終於找到了解決辦法:通過獲取進程並使用Kill()僅重新啓動gui來殺死explorer.exe。要完全關閉它,請使用

 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(任務欄)仍然不顯示... –