2012-05-08 17 views
2

我有一個停住防病毒和它有一個過程「AvastSvc.exe」。如果我嘗試在Windows任務管理器中結束/終止該進程,則會出現一個包含以下消息的窗口:「無法終止進程」,「操作無法完成」,「訪問被拒絕」。試圖結束一些系統Windows進程(如winlogon.exe)可能具有相同的行爲(儘管一旦我設法殺死winlogon.exe並讓我的機器被絞死!)。製作一個應用程序/服務等,試圖結束/殺死它在任務管理器進程會導致「無法終止進程」

我希望我的應用程序(可能轉換爲服務)的行爲方式相同。我怎樣才能做到這一點?

Disable Windows Task Manager so he cant kill my process是一個類似的問題,它有許多有趣的答案,但他們似乎沒有特色的上述防病毒所使用的技術,並導致「無法終止進程」消息。

http://forums.codeguru.com/showthread.php?t=503337對如何防止停止服務(例如,通過SERVICES.MSC控制檯)的解決方案,但我需要防止結束/殺其進程在任務管理器。

我寫的應用程序在C++/WINAPI,沒有CLR/.NET,Windows 7的

UPDATE權限下: 防病毒程序AvastSvc.exe由 「系統」 的賬號。但是,我擁有「系統」帳戶擁有的其他進程,並且它們是可用的,而防病毒不是。另外,我比較了可執行權限和防病毒進程的所有者以及可執行進程的所有者,但我沒有看到任何區別。

UPDATE用戶控制和軟件的目的: 軟件功能的地方,系統和商業軟件之間。軟件的性質要求它永久運行。應用程序本身將會有一個「關閉」的動作,我們希望鼓勵用戶使用它並阻止他們殺死進程(它類似於防病毒軟件所做的)。我知道不可能完全阻止用戶將其殺死,但我想讓它更難。這個問題是特別是關於上述方式(「無法終止進程」),其中某些服務(如Avast)使用它來防止終止進程。我完成同樣的行爲就足夠了。而且,如果用戶不喜歡/不再需要它,用戶將能夠卸載該軟件。

+0

提醒我永遠不要使用您生產的任何軟件。那麼你又爲誰工作? :-D –

+1

[防止用戶進程被Process Explorer中的「End Process」終止](http://stackoverflow.com/questions/6185975/prevent-user-process-from-being-killed-with- end-process-from-process-explorer) –

回答

6

這不是通過代碼實現的(當然,這可能是重要的Windows系統進程,但你是操作系統的[可能]不寫成分),而是通過訪問權限。

您可以通過提升到管理員,然後試圖殺害Avast的過程證明這一點。它應該這次成功。或者,您可以獲取可執行文件(可能位於其所在的文件夾)的所有權,然後嘗試終止該進程。再次,它應該是成功的。

Windows不允許應用程序比用戶對計算機施加更多的權力。如果您擁有機器並擁有適當的權限,則可以執行任何您想要的操作,包括終止正在運行的進程。謝天謝地,作爲開發人員,您無法阻止這種情況發生。

用戶始終處於最終控制狀態。試圖創造另一種情況是病毒和其他惡意軟件開發者經常性地戰鬥和失敗的一場戰鬥。由於我不想幫助任何人編寫惡意軟件,這就是我要說的。

除了編寫惡意軟件之外,我無法想象應用程序中這個「功能」的動機是什麼。如果您只是試圖阻止普通用戶殺死對業務系統至關重要的進程,那麼您應該降級標準用戶帳戶的權限,以便他們無法篡改這些內容。因此,這可能是組策略的一項工作,而不是代碼。

+0

1)我對我的問題做了一些更新。 2)我實際上並不知道它是在代碼或其他地方完成的。 3)「降級標準用戶帳戶的權限」:我們將無法訪問用戶計算機,我們也不希望他們對其計算機進行其他更改。用戶將下載安裝程序,並像安裝防病毒軟件一樣安裝它。 – user444214

+0

啊,所以不是你的機器。那麼,無論您的動機如何,您確實沒有任何業務或權利可以爲了您自己的目的而採取行動。您的意圖與惡意軟件無法區分,保證其持續存在的唯一合理場景是在您自己的硬件上運行它併爲其提供(非持久性)遠程訪問權限。 – HonoredMule

+0

這種方法並不滿足這些方案(例如在線管理測試並需要監視被測試者的計算機活動),這些方案是非常合理的。但是,它們遠不如維護基本安全模型的完整性,因爲第一個責任是維護計算機所有者(合法)的意圖遠遠高於其他所有人。關於我提出的特定場景,我在面試之前就拒絕了一份工作。我嚴重懷疑你的情況表現出比這更高的風險。 – HonoredMule

0
  1. 隱藏你的進程從EPROCESS結構刪除它不能被其他進程取消或完成
  2. 問題持續的I/O請求
  3. 創建線程調試自己的過程
  4. 創建單獨的進程/ es從監視主進程的內存中,一旦被另一進程終止,從內存重新啓動它
相關問題