2010-04-19 98 views
3

我需要,而我的應用程序關閉怎麼我做關閉Windows中的所有打開的應用程序,使用C#需要關閉所有正在運行的應用程序,而使用Windows註銷從C#應用程序

我實現我的應用程序登錄/註銷功能本身,而不是Windows登錄/註銷,這樣我需要關閉所有應用程序,同時註銷我的應用程序點擊,之後

+6

提醒我不要運行... – 2010-04-19 05:14:16

+0

你想殺死所有正在運行的進程嗎? – Ando 2010-04-19 05:18:03

+1

**不要這樣做!**你究竟在做什麼?這是一種亭子應用程序嗎?您可以通過修改組策略(等)來實現自助終端應用程序。如果你告訴我們你真的需要這個*作爲*,那麼我們或許可以給你一個更好的選擇...... – 2010-04-19 05:32:05

回答

0
using System.Diagnostics; 

Process [] localAll = Process.GetProcesses(); 
foreach(Process p in localAll) 
{ 
    p.Kill(); 
} 

控制傳遞給我的應用程序,但你可能不得不把一些一種過濾器,以避免殺死某些進程,否則機器可能會有點不高興。

+1

「可能會有點不安」 - 部分取決於我的一天:thx! – riffnl 2010-04-19 08:24:39

0

無論出於何種原因你想這樣做。這是一個有趣的方式來做到這一點!

using System.Diagnostics; 

Parallel.ForEach(Process.GetProcesses(), process => process.Kill()); 

不要用高架的過程來運行它;可能會導致你的操作系統崩潰。

+0

這太有趣了。 – jcao219 2010-09-10 23:03:20

0

你肯定不想只是遍歷系統進程並全部殺死它們。有很多東西不應該被殺死。如果您在Windows註銷,然後登錄到其他用戶下,那麼有很多進程在系統級保持運行,並且被所有登錄共享。作爲一個很好的例子,如果我在Windows任務管理器中查看當前用戶擁有的進程(不是系統),那麼我將運行ATI Catalyst Control,用於我的觸摸板的Synaptics應用程序,用於鼠標的Logitech應用程序,藍牙堆棧,音頻系統,戴爾無線局域網接口管理的東西......如果我殺了所有這些,我懷疑我的外圍設備將開始行爲奇怪,即使其他用戶在我之後登錄。


你能只是調用實際的Windows註銷的東西用的P/Invoke,作爲建議here?這種方式Windows本身可以做...嗯,無論它做什麼當用戶註銷,而不是你必須自己處理它。

最糟糕的是,我會嘗試收集啓動時由Windows啓動的東西。該 'Statup' 項目從的StartMenu:

C:\ Users \用戶名\ AppData的\漫遊\微軟\的Windows \開始菜單\程序\啓動

,並從註冊表中的項目:

HKEY_CURRENT_USER \軟件\微軟\的Windows \ CurrentVersion \ Run中

然後在正在運行的進程循環,看看這確實屬於這個用戶,只能阻止這些用戶。

相關問題