長期以來,Windows 系統緩慢的關機速度一直為人诟病,用戶往往需要等待很長時間才能把系統關閉,這一問題在Windows Vista中也沒有得到很好的解決,——也許微軟將Windows Vista開始菜單中的關機(Power)按鈕預設為進入睡眠狀態而不是傳統意義上的關機,也有這方面的考慮? 畢竟進行睡眠狀態的速度是有保障的。——當然,這也與Windows 系統自身的機制有關:Windows在發出關機指令後,需要首先通知已加載有服務、應用程序和進程等,待其逐一關閉後才能進行系統關機或重啟的任務,此外,關機前要進行的操作還包括如清理頁面文件等,需要對頁面文件中的每個頁面執行物理寫入操作,從理論上講,這些過程是不可省略的,不然將影響系統的穩定性。
因此,對用戶而言,要加快Windows Vista的關機速度,在保證系統穩定性前提下可做的優化不是跳過類似的服務、應用程序或進程的關閉,而是通過盡量縮短關閉前的等待時間。那麼,在Windows Vista中,應如何操作呢?
同之前的Windows系統一樣,我們可以通過修改注冊表調整相應選項來實現。
縮短關閉服務前的等待時間
上面我們提到過,在Windows Vista的關機流程中,系統首先向已加載的服務發出關閉警告,然後等待這些服務自動關閉後給出的關閉信號,如果在設定的等待時間期限後仍未收到關閉信號,Windows系統將相應的服務實施強行中止關閉。
要加快Windows Vista的關機速度,首先可以通過縮短系統默認的關閉服務等待時間來實現。打開注冊表編輯器,找到如下注冊表項:
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control
在右面板中,可以看到一個名為“WaitToKillServiceTimeout”的注冊表項,雙擊以修改它,將它的數值從默認的20000(單位為毫秒)調整到一個較小的數值,如5000 甚至1000等,這樣,如果Windows Vista在設置的5秒(5000)或1秒(1000)內沒有收到服務關閉信號,系統即會彈出一個警告窗口,通知用戶該服務無法中止,並給出強制中止服務或繼續等待的選項等待用戶選擇。
縮短關閉應用程序與進程前的等待時間
與關閉服務前的等待時間類似,Windows Vista在強行關閉應用程序與進程前同樣有一段等待該程序或進程自行關閉的時間,只有超過該時限後,Windows 系統才會將其強行中止。
因此,縮短默認關閉應用程序或進行等待時間,同樣能夠加快Windows Vista的關機速度。
設置方法同上面類似,在注冊表中找到如下分支:
HKEY_CURRENT_USER\Control Panel\Desktop
雙擊右側面板中的 “WaitToKillAppTimeout” ,將其值從默認的 20000(單位同樣為毫秒)修改為較小的5000或1000,這樣,Windows在發出關機指令後如果等待5秒或1秒仍未收到某個應用程序或進行的關閉信號,將彈出相應的警告信號,並詢問用戶是否強行中止。
在右側面板中還有一個名為 “HungAppTimeout” 的注冊表項,該項對應於系統在用戶強行關閉某個進程或應用程序後,如果該對象沒有響應時的等待時間。其默認值為“5000”,一般可將其修改為“1000”。
然後,在如下的注冊表分支:
HKEY_USERS\.DEFAULT\Control Panel\Desktop\
重復上面的操作,即修改“WaitToKillAppTimeout”與 “HungAppTimeout” 兩個注冊表項的值。
在關機或注銷時自動中止應用程序或進程
不過,即便我們將 “HungAppTimeout”的值設得很小,並不意味著Windows Vista在等待時間超過該時限後便會自動中止該程序或進程,而仍會彈出對話框讓用戶確認是否中止。如果您感覺這樣的方式過於繁瑣,可通過修改注冊表項讓Windows Vista在超過等待時限後自動強行中斷該進程的運行。
找到如下的注冊表分支:
HKEY_CURRENT_USER\Control Panel\Desktop registry
可看到項中有一名為“AutoEndTasks”的注冊表項,其默認值為“0”,將其修改為“1”即是讓Windows Vista自動終止所有的進程,而不再需用戶的確認。
以保證系統的穩定性為前提
盡管上面的方法在某些情況下可以明顯加快Windows Vista的關機速度。不過,需要強調的是,無論“WaitToKillServiceTimeout”、“WaitToKillAppTimeout”還是“HungAppTimeout”,對Windows 系統而言都是相當重要且不可缺少的參數,設置不當將影響系統的穩定性或遺失用戶重要數據的後果。
以“WaitToKillServiceTimeout”為例,Windows 系統使用WaitToKillServiceTimeout的目的是為了給相應服務一段緩沖時間,讓這些執行中的服務能夠將緩存中的數據在系統關閉前寫回去,如果沒有保留足夠的緩沖時間,數據便可能丟失而造成無法預知的後果,因此,一般不要將其時長設置得過短,至於將其設為“0”則更是不恰當的。
另:上述修改方法同樣適用於Windows 2000、 Windows XP與 Windows 2003。