從平常的經(jīng)驗可以看出,執(zhí)行了關(guān)機操作后電腦不會立即斷電,Windows還會有一系列的動作如關(guān)閉打開的程序等,那么從執(zhí)行關(guān)機命令到最終斷電是一個什么樣的過程呢?
Windows的正常關(guān)機涉及到多個組件和多個過程。我們來看一下它的基本過程。
①用戶發(fā)起關(guān)機指令后,發(fā)起關(guān)機指令的程序會通知Windows子系統(tǒng)CSRSS.EXE,CSRSS.EXE收到通知后會和Winlogon.EXE做一個數(shù)據(jù)交換,接著由Winlogon.EXE通知CSRSS.EXE開始關(guān)閉系統(tǒng)的流程。
②CSRSS.EXE收到Winlogon.EXE的通知后,會依次查詢擁有頂層窗口的用戶進程,讓這些用戶進程退出。如果某一個用戶進程在一個默認的超時時間5000毫秒(可以通過修改注冊表鍵值HKEY_CURRENT_USERControl PanelDesktop HungAppTimeout設(shè)定超時時間)內(nèi)沒有退出的話,Windows會顯示一個結(jié)束任務(wù)對話框用于詢問用戶是否結(jié)束這個任務(wù)。默認情況下這個對話框會一直顯示而不會自動關(guān)閉。
對于控制臺程序來說,基本情況類似,只不過Windows使用HKEY_CURRENT_USERControl PanelDesktop WaitToKillAppTimeout來設(shè)置超時時間。
③接著是輪到終止系統(tǒng)進程了。系統(tǒng)進程包括SMSS.EXE、Winlogon.EXE、Lsass.EXE等。Windows在終止系統(tǒng)進程的時候并不像終止用戶進程那樣如果無法在規(guī)定時間內(nèi)終止則提示用戶,而是跳過這個進程,去執(zhí)行下一個系統(tǒng)進程的終止操作。使用的超時時間和第2步使用的時間相同。
Windows的正常關(guān)機涉及到多個組件和多個過程。我們來看一下它的基本過程。
①用戶發(fā)起關(guān)機指令后,發(fā)起關(guān)機指令的程序會通知Windows子系統(tǒng)CSRSS.EXE,CSRSS.EXE收到通知后會和Winlogon.EXE做一個數(shù)據(jù)交換,接著由Winlogon.EXE通知CSRSS.EXE開始關(guān)閉系統(tǒng)的流程。
②CSRSS.EXE收到Winlogon.EXE的通知后,會依次查詢擁有頂層窗口的用戶進程,讓這些用戶進程退出。如果某一個用戶進程在一個默認的超時時間5000毫秒(可以通過修改注冊表鍵值HKEY_CURRENT_USERControl PanelDesktop HungAppTimeout設(shè)定超時時間)內(nèi)沒有退出的話,Windows會顯示一個結(jié)束任務(wù)對話框用于詢問用戶是否結(jié)束這個任務(wù)。默認情況下這個對話框會一直顯示而不會自動關(guān)閉。
對于控制臺程序來說,基本情況類似,只不過Windows使用HKEY_CURRENT_USERControl PanelDesktop WaitToKillAppTimeout來設(shè)置超時時間。
③接著是輪到終止系統(tǒng)進程了。系統(tǒng)進程包括SMSS.EXE、Winlogon.EXE、Lsass.EXE等。Windows在終止系統(tǒng)進程的時候并不像終止用戶進程那樣如果無法在規(guī)定時間內(nèi)終止則提示用戶,而是跳過這個進程,去執(zhí)行下一個系統(tǒng)進程的終止操作。使用的超時時間和第2步使用的時間相同。
Windows的正常關(guān)機涉及到多個組件和多個過程。我們來看一下它的基本過程。
①用戶發(fā)起關(guān)機指令后,發(fā)起關(guān)機指令的程序會通知Windows子系統(tǒng)CSRSS.EXE,CSRSS.EXE收到通知后會和Winlogon.EXE做一個數(shù)據(jù)交換,接著由Winlogon.EXE通知CSRSS.EXE開始關(guān)閉系統(tǒng)的流程。
②CSRSS.EXE收到Winlogon.EXE的通知后,會依次查詢擁有頂層窗口的用戶進程,讓這些用戶進程退出。如果某一個用戶進程在一個默認的超時時間5000毫秒(可以通過修改注冊表鍵值HKEY_CURRENT_USERControl PanelDesktop HungAppTimeout設(shè)定超時時間)內(nèi)沒有退出的話,Windows會顯示一個結(jié)束任務(wù)對話框用于詢問用戶是否結(jié)束這個任務(wù)。默認情況下這個對話框會一直顯示而不會自動關(guān)閉。
對于控制臺程序來說,基本情況類似,只不過Windows使用HKEY_CURRENT_USERControl PanelDesktop WaitToKillAppTimeout來設(shè)置超時時間。
③接著是輪到終止系統(tǒng)進程了。系統(tǒng)進程包括SMSS.EXE、Winlogon.EXE、Lsass.EXE等。Windows在終止系統(tǒng)進程的時候并不像終止用戶進程那樣如果無法在規(guī)定時間內(nèi)終止則提示用戶,而是跳過這個進程,去執(zhí)行下一個系統(tǒng)進程的終止操作。使用的超時時間和第2步使用的時間相同。
Windows的正常關(guān)機涉及到多個組件和多個過程。我們來看一下它的基本過程。
①用戶發(fā)起關(guān)機指令后,發(fā)起關(guān)機指令的程序會通知Windows子系統(tǒng)CSRSS.EXE,CSRSS.EXE收到通知后會和Winlogon.EXE做一個數(shù)據(jù)交換,接著由Winlogon.EXE通知CSRSS.EXE開始關(guān)閉系統(tǒng)的流程。
②CSRSS.EXE收到Winlogon.EXE的通知后,會依次查詢擁有頂層窗口的用戶進程,讓這些用戶進程退出。如果某一個用戶進程在一個默認的超時時間5000毫秒(可以通過修改注冊表鍵值HKEY_CURRENT_USERControl PanelDesktop HungAppTimeout設(shè)定超時時間)內(nèi)沒有退出的話,Windows會顯示一個結(jié)束任務(wù)對話框用于詢問用戶是否結(jié)束這個任務(wù)。默認情況下這個對話框會一直顯示而不會自動關(guān)閉。
對于控制臺程序來說,基本情況類似,只不過Windows使用HKEY_CURRENT_USERControl PanelDesktop WaitToKillAppTimeout來設(shè)置超時時間。
③接著是輪到終止系統(tǒng)進程了。系統(tǒng)進程包括SMSS.EXE、Winlogon.EXE、Lsass.EXE等。Windows在終止系統(tǒng)進程的時候并不像終止用戶進程那樣如果無法在規(guī)定時間內(nèi)終止則提示用戶,而是跳過這個進程,去執(zhí)行下一個系統(tǒng)進程的終止操作。使用的超時時間和第2步使用的時間相同。

