簡體   English   中英

需要關閉所有正在運行的應用程序而不使用c#應用程序的Windows注銷

[英]need to close all running applications without using windows logoff from c# application

我需要關閉Windows中所有打開的應用程序,而我的應用程序關閉我如何使用c#

我正在我的應用程序本身而不是Windows登錄/注銷中實現登錄/注銷功能,這樣我需要關閉所有應用程序,同時在我的應用程序中單擊注銷並將控制權傳遞給我的應用程序之后

using System.Diagnostics;

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

但是你可能不得不放入某種過濾器以避免殺死某些進程,否則機器可能會有點不高興。

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

using System.Diagnostics;

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

不要在升級過程中運行它; 可能會導致您的操作系統崩潰。

你絕對不想只是循環系統進程並將它們全部殺掉。 有很多東西不應該被殺死。 如果您在Windows中“注銷”然后在另一個用戶下登錄,則有許多進程在系統級別保持運行並由所有登錄共享。

舉一個很好的例子,如果我在Windows任務管理器中查看我當前用戶所擁有的進程(而不是系統),那么我將運行ATI Catalyst Control,觸摸板的Synaptics應用程序,我的鼠標的Logitech應用程序,以及藍牙堆棧,音頻系統的東西,戴爾無線局域網界面管理的東西...如果我殺了所有這些,我懷疑我的外圍設備將開始表現奇怪,即使其他用戶登錄我。


你可以只調用實際的Windows注銷的東西用的P / Invoke,如建議在這里 這樣,Windows本身就可以做到......好吧, 無論用戶何時注銷,都可以自己處理。

在最壞的情況下 ,我會嘗試收集啟動時Windows啟動的內容。 StartMenu中的'Statup'項:

C:\\ Users \\ User_Name \\ AppData \\ Roaming \\ Microsoft \\ Windows \\ Start Menu \\ Programs \\ Startup

和注冊表中的項目:

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

然后遍歷正在運行的進程,看看哪個真正屬於這個用戶並且只停止那些用戶。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM