安徽趙凱讀者來信:“我最近下載了一款快速關機的軟件,這款軟件非常厲害,幾乎眨眼工夫就將電腦關閉了。很多人說這個軟件可能會破壞數據,但他們又沒有說出相應的依據。我現在很矛盾,有了一個好東西,卻又不敢用。董師傅,希望你能給一個權威的說法,以消除我的疑惑。”
不光是趙凱讀者提到的軟件能實現快速關機,而且采用一些技巧也可以達到同樣的目的,但這樣操作究竟會帶來什麼後果呢?這次被師傅邀請到“話題館”參與討論的是對Windows系統頗有研究、榮獲2004年微軟最有價值專家的張康宗先生。
從平常的經驗可以看出,執行了關機操作後電腦不會立即斷電,Windows還會有一系列的動作如關閉打開的程序等,那麼從執行關機命令到最終斷電是一個什麼樣的過程呢?
Windows的正常關機涉及到多個組件和多個過程。我們來看一下它的基本過程。
①用戶發起關機指令後,發起關機指令的程序會通知Windows子系統CSRSS.EXE,CSRSS.EXE收到通知後會和Winlogon.EXE做一個數據交換,接著由Winlogon.EXE通知CSRSS.EXE開始關閉系統的流程。
②CSRSS.EXE收到Winlogon.EXE的通知後,會依次查詢擁有頂層窗口的用戶進程,讓這些用戶進程退出。如果某一個用戶進程在一個默認的超時時間5000毫秒(可以通過修改注冊表鍵值HKEY_CURRENT_USERControl PanelDesktop HungAPPTimeout設定超時時間)內沒有退出的話,Windows會顯示一個結束任務對話框用於詢問用戶是否結束這個任務。默認情況下這個對話框會一直顯示而不會自動關閉。
對於控制台程序來說,基本情況類似,只不過Windows使用HKEY_CURRENT_USERControl PanelDesktop WaitToKillAPPTimeout來設置超時時間。
③接著是輪到終止系統進程了。系統進程包括SMSS.EXE、Winlogon.EXE、Lsass.EXE等。Windows在終止系統進程的時候並不像終止用戶進程那樣如果無法在規定時間內終止則提示用戶,而是跳過這個進程,去執行下一個系統進程的終止操作。使用的超時時間和第2步使用的時間相同。
Windows的正常關機涉及到多個組件和多個過程。我們來看一下它的基本過程。
①用戶發起關機指令後,發起關機指令的程序會通知Windows子系統CSRSS.EXE,CSRSS.EXE收到通知後會和Winlogon.EXE做一個數據交換,接著由Winlogon.EXE通知CSRSS.EXE開始關閉系統的流程。
②CSRSS.EXE收到Winlogon.EXE的通知後,會依次查詢擁有頂層窗口的用戶進程,讓這些用戶進程退出。如果某一個用戶進程在一個默認的超時時間5000毫秒(可以通過修改注冊表鍵值HKEY_CURRENT_USERControl PanelDesktop HungAPPTimeout設定超時時間)內沒有退出的話,Windows會顯示一個結束任務對話框用於詢問用戶是否結束這個任務。默認情況下這個對話框會一直顯示而不會自動關閉。
對於控制台程序來說,基本情況類似,只不過Windows使用HKEY_CURRENT_USERControl PanelDesktop WaitToKillAPPTimeout來設置超時時間。
③接著是輪到終止系統進程了。系統進程包括SMSS.EXE、Winlogon.EXE、Lsass.EXE等。Windows在終止系統進程的時候並不像終止用戶進程那樣如果無法在規定時間內終止則提示用戶,而是跳過這個進程,去執行下一個系統進程的終止操作。使用的超時時間和第2步使用的時間相同。