與a question I asked here相關 - 我有一個啓動的進程處於「暫停」狀態。我無法通過任何常規手段(進程管理器,任務管理器,WinDbg)殺死或恢復此進程。如何在Windows中註銷用戶會話設法殺死「unkillable」進程?
註銷我的會話雖然殺死這個過程。怎麼樣?當我註銷時,操作系統使用什麼機制與Process Explorer嘗試執行的操作有什麼不同?
編輯:澄清 - 我假設Process Explorer在嘗試殺死進程時調用TerminateProcess API函數。過程狀態中的某些東西正在阻止這種工作。顯然,註銷會調用一些不同的行爲,而Windows會忽略阻塞TerminateProcess的任何行爲,並會因爲會話結束而終止進程。
作爲用戶,除了調用TerminateProcess API之外,是否有任何不同的方式來嘗試和終止進程?
這*可能*不是Windows有意做的事情。我的猜測是,無論是什麼導致進程陷入僵局(必須處於內核模式,可能是錯誤的防病毒軟件或錯誤的設備驅動程序),恰好在正確的環境下自行糾正,並導致登錄失敗。 IOW,註銷可能只是一個巧合,解決了問題。 –
另一方面,當刪除窗口站時(例如)內核使用ZwTerminateProcess來終止任何剩餘的進程,並且可能從內核模式發出調用,繞過干擾原始進程的任何事情,似乎是合理的。雖然沒有簡單的方法來測試這個理論。無論如何,你可能會更好地解決原始問題,而不是試圖解決它 - 這是*不正常的行爲。 –