快速關機是否會導致數據損壞
發表于:2007-07-13來源:作者:點擊數:
標簽:
讀者來信:“我最近下載了一款快速關機的軟件,這款軟件非常 厲害,幾乎眨眼工夫就將電腦關閉了。很多人說這個軟件可能會破壞數據,但他們又沒有說出相應的依據。我現在很矛盾,有了 一個好東西,卻又不敢用。董師傅,希望你能給一個權威的說法 ,以消除我的
讀者來信:“我最近
下載了一款快速關機的軟件,這款軟件非常 厲害,幾乎眨眼工夫就將電腦關閉了。很多人說這個軟件可能會破壞數據,但他們又沒有說出相應的依據。我現在很矛盾,有了 一個好東西,卻又不敢用。董師傅,希望你能給一個權威的說法 ,以消除我的疑惑?!?
不光是趙凱讀者提到的軟件能實現快速關機,而且采用 一些技巧也可以達到同樣的目的,但這樣操作究竟會帶來什么后 果呢?這次被師傅邀請到“話題館”參與討論的是對
Windows系統 頗有研究、榮獲2004年微軟最有價值專家的張康宗先生。
從平常的經驗可以看出,執行了關機操作后電腦不會立 即斷電,Windows還會有一系列的動作如關閉打開的程序等,那 么從執行關機命令到最終斷電是一個什么樣的過程呢?
Windows的正常關機涉及到多個組件和多個過程。我 們來看一下它的基本過程。
?、儆脩舭l起關機指令后,發起關機指令的程序會通知 Windows子系統C
SRSS.EXE,CSRSS.EXE收到通知后會和 Winlogon.EXE做一個數據交換,接著由Winlogon.EXE通知 CSRSS.EXE開始關閉系統的流程。
?、贑SRSS.EXE收到Winlogon.EXE的通知后,會依次查詢擁 有頂層窗口的用戶進程,讓這些用戶進程退出。如果某一個用戶 進程在一個默認的超時時間5000毫秒(可以通過修改注冊表鍵值 HKEY_CURRENT_USERControl PanelDesktop HungAppTimeout設定超時時間)內沒有退出的話,Windows會顯示 一個結束任務對話框用于詢問用戶是否結束這個任務。默認情況 下這個對話框會一直顯示而不會自動關閉。
對于控制臺程序來說,基本情況類似,只不過Windows使 用HKEY_CURRENT_USERControl PanelDesktop WaitToKillAppTimeout來設置超時時間。
?、劢又禽喌浇K止系統進程了。系統進程包括SMSS.EXE 、Winlogon.EXE、Lsass.EXE等。Windows在終止系統進程的時候 并不像終止用戶進程那樣如果無法在規定時間內終止則提示用戶 ,而是跳過這個進程,去執行下一個系統進程的終止操作。使用 的超時時間和第2步使用的時間相同。
上述3個步驟是整個Windows關機過程中最耗費時間的一 段,大多數關機緩慢的原因都是因為這3個步驟引起的。完成前3 個步驟后,進入關機操作的第4個階段,這也是最后一個階段。
?、躓inlogon.EXE調用一個原生API函數NtShutdownSystem()來 命令系統執行后面的掃尾工作。在這個階段里,Windows執行子 系統會完成最后的關機操作,例如:設備驅動在這個階段里完成 一些驅動設定的特殊操作;也是在這個階段,
配置管理系統將被 修改過的注冊表數據回寫到磁盤里面。等除了電源管理以外的全 部子系統完成退出以后,電源管理完成最后的操作:如重啟、關 機等。
看來Windows關機過程還挺復雜的。我也試用了劉凱讀者 所說的軟件SuperFast Shutdown(http://www.xp- smoker.com/installations/superfast.zip),確實會讓關機速 度加快。另外我們知道按Ctrl鍵的同時,再單擊任務管理器窗口 中的菜單“關機→關閉”命令時,系統也會被快速關閉。它們又 是如何實現快速關機的目的呢?
我分析了一下SuperFast Shutdown,它是用Visual Basic編寫的。經過分析后得出一個令人驚訝的結論:SuperFast Shutdown首先使用RtlAdjustPrivilege()提升自己的權限,然后 直接調用NtShutdownSystem() 函數來完成關機過程。也就是說它跳過了最為耗費時間的前3個 步驟而直接進入第4個步驟,因此能夠很快關機。
利用Ctrl鍵配合任務管理器的快速關機技巧類似于 SuperFast Shutdown的原理,即通過省略一些步驟來加快關機的 速度。
原來它們之所以能快速關機是因為投機取巧,跳過了一 些步驟。我記得當初使用Ctrl鍵配合任務管理器的關機技巧時, 關機速度是快了,不過卻出現過Office各組件中的個性設置丟失 等莫名其妙的問題,這些問題和快速關機有關嗎?
毫無疑問,利用前面的方法快速關機很容易導致你所說 的那些問題。這是因為在前3個步驟中,有一個讓進程正常退出 的過程。大多數軟件在編寫的時候會把一些設置保存在自己私有 的內存空間里面,當軟件關閉的時候才把這些設置回寫到特定的 地方,如注冊表或某個配置文件里。
而關機操作的第4步并沒有提供一種途徑能夠讓這些設置 被記錄下來,因為這個階段Windows認為前面所有必須經過的流 程已經完成,剩下的就是Windows核心組件的退出問題了。在這 種情況下,使用快速關機導致軟件設置丟失等現象也就不足為怪 了。
實際上Windows本身的關機速度已經很快了,關機速度變 慢的多數問題都出在用戶安裝的程序上,由于一些設計不好的應 用程序或驅動程序的問題,造成了關機上的延遲。
因此要加快關機速度,正確的做法是盡量減少應用程序 等對關機過程的影響,如關閉一些無用的自啟動程序等,而借助 SuperFast Shutdown或一些技巧執行非常規的關機操作盡量不要使用,畢竟 數據的
安全性比節省的那幾十秒鐘重要得多。
原文轉自:http://www.kjueaiud.com