進(jìn)程綜述
smss.exe進(jìn)程是微軟®公司為其發(fā)布的基于Windows NT系統(tǒng)(200/XP/Vista以及Win7等)定義的一個重要系統(tǒng)核心程序,官方描述為:Windows會話管理器。
會話管理器負(fù)責(zé)Windows操作系統(tǒng)啟動及操作中的許多的重要步驟,比如打開額外的頁面文件、執(zhí)行延遲的文件改名和刪除操作,創(chuàng)建系統(tǒng)環(huán)境變量。他也將Csrss.exe和Winlogon.exe進(jìn)程啟動起來,Winlogon.exe進(jìn)程會依次創(chuàng)建其他系統(tǒng)進(jìn)程。
smss.exe這是一個Windows后臺進(jìn)程,會隨著系統(tǒng)一起啟動,由于其是系統(tǒng)運(yùn)行的重要進(jìn)程,如果強(qiáng)行將其終止系統(tǒng)也會被關(guān)閉,如下圖所示:
smss.exe作為系統(tǒng)進(jìn)程在通常情況下都是安全的,我們可以在以下位置看到其程序文件:
所在位置:C:\Windows\System32\smss.exe(C代表系統(tǒng)安裝所在分區(qū)盤符)
功能詳解
smss.exe(會話管理器)是Windows系統(tǒng)中第一個創(chuàng)建的用戶模式進(jìn)程。負(fù)責(zé)完成執(zhí)行體和內(nèi)核初始化工作的內(nèi)核模式系統(tǒng)線程在最后階段創(chuàng)建了實際的Smss進(jìn)程。在啟動Windows的過程中,smss.exe作用過程分為7個步驟,分別如下:
- 創(chuàng)建LPC port對象,為MSDOS定義符號連接,例如COM1、LPT1,假如安裝有Terminal Services,則創(chuàng)建\Sessions目錄
- 運(yùn)行注冊表里HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\BootExecute定義的程序,一般默認(rèn)的是運(yùn)行Autochk
- 執(zhí)行HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\PendingFileRenameOperations表鍵中的延遲,刪除,改名操作
- 加載HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\KnownDLLs 初始化paging files和注冊表
- 創(chuàng)建系統(tǒng)環(huán)境變量,這些定義在HKLM\System\CurrentControlSet\Session Manager\Environment
- 加載和初始化Win32子系統(tǒng)的內(nèi)核模塊Win32k.sys
- 創(chuàng)建Win32子系統(tǒng)服務(wù)器進(jìn)程,包括Csrss.exe并創(chuàng)建Winlogon.exe進(jìn)程。
在注冊表的HKLM\SYSTEM\CurrentControlSet\Control\Session Manager下面,你可以找到許多配置信息,它們驅(qū)動了Smss.exe的初始化步驟。Smss.exe中的主線程在執(zhí)行了這些初始化步驟以后, 一直在Csrss.exe和Winlogon.exe的進(jìn)程句柄上等待。如果這兩個進(jìn)程中的任何一個非正常終止了,則Smss讓系統(tǒng)崩潰掉(崩潰的代碼是 STATUS_SYSTEM_PROCESS_TERMINATED或0xC000021A),因為Windows要依賴于這兩個進(jìn)程的存在才能運(yùn)行得下去。(拓展閱讀:svchost.exe是什么進(jìn)程?)
同時Smss.exe等待加載子系統(tǒng)的請求、調(diào)試事件,以及創(chuàng)建新的終端服務(wù)器會話(terminal server sessions)的請求。終端服務(wù)會話(Terminal Services session)的創(chuàng)建是由Smss.exe來完成的。當(dāng)Smss.exe接到一個創(chuàng)建會話的請求時,它首先調(diào)用NtSetSystemInformation,請求建立內(nèi)核模式的會話數(shù)據(jù)結(jié)構(gòu)。又依次調(diào)用內(nèi)部的內(nèi)存管理器函數(shù)MmSessionCreate, 該函數(shù)建立起會話虛擬地址空間,該地址空間中包含會話中的換頁內(nèi)存池,以及由Win32子系統(tǒng)的內(nèi)核模式部分(Win32k.sys)和其他的會話空間設(shè)備驅(qū)動程序所分配的、屬于每個會話的數(shù)據(jù)結(jié)構(gòu)。然后,Smss.exe為該會話創(chuàng)建Winlogon.exe和Csrss.exe的實例。