2013-06-28 36 views
-4

我可以從c或C++程序訪問任務管理器中的進程,如explorer.exe嗎?在windows下殺死所有未列入白名單的進程

我正在編寫一個程序來結束那些流暢運行計算機所不需要的進程。所有必要過程的列表都保存在文本文件中。我的程序需要檢查這個列表中的進程,並與任務管理器的進程進行比較 - 如果進程不存在於文本文件中,那麼該進程應該結束。

+0

與你的標題有什麼關係? –

+0

抱歉,標題是針對其他問題的錯誤 – GhostCoder

+0

整個操作系統的白名單似乎是一個非常糟糕的決定... – UmNyobe

回答

1

Just ShellExecute taskkill。輸入taskkill /?以cmd爲單位獲取更多信息。 它可以通過圖像名稱(例如notepad.exe)和PID(例如1337)來殺死。

將它與tasklist命令結合使用。

如果您不想使用簡單的批處理腳本(或PowerShell),但堅持要在C或C++中執行此操作,則應該使用管道來處理命令的輸出。

0

糟糕的做法,恕我直言。

你不應該殺死其他基於白名單的進程。 我認爲最好防止他們開始。 您可以使用sysinternals中的Autoruns來執行此操作。

系統服務怎麼樣?你是否只對用戶會話中的進程感興趣?

另一方面,你可以有你想殺死的進程的黑名單。

Windows爲halting processes提供了清晰的API。 首先你需要enumerate all running processes

但是,除非您有足夠的理由這樣做,否則不鼓勵您強制停止無法啓動的進程。

0

這很簡單,也有在做的伎倆窗口兩個命令:

  1. 任務列表 - 顯示所有當前活動的任務。
  2. TASKKILL - 「殺死」 您指定

嘗試一下在cmd中的任務:

yourcommand/?生成你想要的命令的幫助。