熱點推薦:
您现在的位置: 電腦知識網 >> 操作系統 >> Windows優化 >> 正文

Windows快速關機之謎

2013-11-12 16:47:59  來源: Windows優化 

  總有人在抱怨Windows的關機是如何的緩慢實際上Windows本身的關機速度已經很快的了問題主要出在用戶安裝的程序上面由於一些設計不好的應用程序或驅動程序的問題造成了關機上的延遲針對這個問題網絡上出現了類似於下面的技巧

  打開任務管理器按住Ctrl鍵的同時再單擊任務管理器窗口中的菜單關機→關閉命令時系統會快速地被關閉同樣在按住Ctrl鍵時選擇其他命令(例如重新啟動)時也會達到快速執行該命令的目的

  同時也出現了像SuperFast Shutdown一樣的快速關機軟件
在討論上述技巧原理之前先說說Windows是如何關機的Windows關機步驟涉及到Windows多個組件和多個過程簡單的說Windows的關機步驟不是大多數人認為的那麼簡單基本的過程是這樣的
   用戶發起關機指令以後發起關機指令的程序會通知Windows子系統CSRSSEXECSRSSEXE收到通知以後會和WinlogonEXE做一個數據交換接著由WinlogonEXE通知CSRSSEXE開始關閉系統的流程
   CSRSSEXE收到WinlogonEXE的通知以後會依次查詢擁有頂層窗口的用戶進程讓這些用戶進程退出如果某一個用戶進程在一個默認的超時時間毫秒(可以通過修改注冊表鍵值HKEY_CURRENT_USER\Cont rol Panel\Desktop\ HungAppTimeout設定超時時間)內沒有退出的話Windows會顯示一個結束任務對話框用於詢問用戶是否結束這個任務默認情況下將顯示這個對話框並一直保持而不會自動關閉對於控制台程序來說基本情況類似只不過Windows使用HK EY_CURRENT_USER\Control Panel\Desktop\ WaitToKillAppTimeout值來設置超時時間
   接著是輪到終止系統進程了系統進程包括SMSSEXEWinlogonEXELsassEXE等Windows在終止系統進程的時候並不像終止用戶進程那樣如果無法在規定時間內終止則提示用戶而是跳過這個進程去執行下一個系統 進程的終止操作使用的超時時間和第步使用的時間相同

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

   WinlogonEXE調用一個原生API函數NtShutdownSystem()來命令系統執行後面的掃尾工作在這個階段裡面Windows執行子系統會完成最後的關機操作例如設備驅動在這個階段裡面完成一些驅動設定的特殊操作 也是在這個階段配置管理系統將被修改過的注冊表數據會寫道磁盤裡面等除了電源管理以後的全部子系統完成退出以後電源管理完成最後的操作如重啟關機等

  了解了Windows的關機流程以後下面分析一下前面說的快速關機操作是怎麼完成的先分析一下SuperFast Shutdown的原理SuperFast Shutdown是使用Visual Basic編寫的體積很小KB經過分析以後得出一個令人驚訝的結論SuperFast Shutdown首先使用RtlAdjustPrivilege()提升自己的權限然後直接調用NtShutdownSystem() 函數來完成關機過程由於跳過了最為耗費時間的前個步驟而直接進入第個步驟所以造成了能夠很快關機的假象

  再看看任務管理器的快速關機是如何實現的分析結果也是類似於SuperFast Shutdown的原理也是通過省略一些步驟來加快關機的速度

  那麼為什麼在快速關機以後會出現設置丟失的情況呢?原因在於前個步驟裡面有一個讓進程正常退出的可能大多數軟件在編寫的時候會把一些設置保存在自己私有的內存空間裡面當軟件關閉的時候才把這些設置回寫到特定的地方如注冊表或某個配置文件裡面 而關機操作的第步並沒有提供一種途徑能夠讓這些設置記錄下來因為這個階段Windows已經認為前面所有必須經過的流程已經完成剩下的就是Windows核心組件的退出的問題了在這種情況下使用快速關機導致設置丟失也不足為怪了

  因此為了你系統的健康關機還是按照正常順序來數據的安全性往往比節省的那幾十秒鐘重要的多


From:http://tw.wingwit.com/Article/os/youhua/201311/10916.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.