倍可親

回復: 0
列印 上一主題 下一主題

快速關機是否會導致數據損壞

[複製鏈接]

1萬

主題

1萬

帖子

1萬

積分

八級貝殼核心

倍可親終生會員(廿一級)

Rank: 5Rank: 5

積分
18033
跳轉到指定樓層
樓主
kent 發表於 2005-8-1 09:26 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
讀者來信:「我最近下載了一款快速關機的軟體,這款軟體非常 厲害,幾乎眨眼工夫就將電腦關閉了。很多人說這個軟體可能會破壞數據,但他們又沒有說出相應的依據。我現在很矛盾,有了 一個好東西,卻又不敢用。董師傅,希望你能給一個權威的說法 ,以消除我的疑惑。」

  不光是趙凱讀者提到的軟體能實現快速關機,而且採用 一些技巧也可以達到同樣的目的,但這樣操作究竟會帶來什麼后 果呢?這次被師傅邀請到「話題館」參與討論的是對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步使用的時間相同。

  上述3個步驟是整個Windows關機過程中最耗費時間的一 段,大多數關機緩慢的原因都是因為這3個步驟引起的。完成前3 個步驟后,進入關機操作的第4個階段,這也是最後一個階段。

④Winlogon.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或一些技巧執行非常規的關機操作盡量不要使用,畢竟 數據的安全性比節省的那幾十秒鐘重要得多。
您需要登錄后才可以回帖 登錄 | 註冊

本版積分規則

關於本站 | 隱私權政策 | 免責條款 | 版權聲明 | 聯絡我們

Copyright © 2001-2013 海外華人中文門戶:倍可親 (http://big5.backchina.com) All Rights Reserved.

程序系統基於 Discuz! X3.1 商業版 優化 Discuz! © 2001-2013 Comsenz Inc.

本站時間採用京港台時間 GMT+8, 2025-8-11 19:29

快速回復 返回頂部 返回列表