进程综述

smss.exe是什么进程?详解Windows会话管理器中的smss.exe-风君雪科技博客smss.exe是什么进程?详解Windows会话管理器中的smss.exe-风君雪科技博客smss.exe进程是微软®公司为其发布的基于Windows NT系统(200/XP/Vista以及Win7等)定义的一个重要系统核心程序,官方描述为:Windows会话管理器。

会话管理器负责Windows操作系统启动及操作中的许多的重要步骤,比如打开额外的页面文件、执行延迟的文件改名和删除操作,创建系统环境变量。他也将Csrss.exe和Winlogon.exe进程启动起来,Winlogon.exe进程会依次创建其他系统进程。

smss.exe这是一个Windows后台进程,会随着系统一起启动,由于其是系统运行的重要进程,如果强行将其终止系统也会被关闭,如下图所示:

smss.exe是什么进程?详解Windows会话管理器中的smss.exe-风君雪科技博客
smss.exe作为系统进程在通常情况下都是安全的,我们可以在以下位置看到其程序文件:

所在位置:C:/Windows/System32/smss.exe(C代表系统安装所在分区盘符)

功能详解

smss.exe(会话管理器)是Windows系统中第一个创建的用户模式进程。负责完成执行体和内核初始化工作的内核模式系统线程在最后阶段创建了实际的Smss进程。在启动Windows的过程中,smss.exe作用过程分为7个步骤,分别如下:

  1. 创建LPC port对象,为MSDOS定义符号连接,例如COM1、LPT1,假如安装有Terminal Services,则创建/Sessions目录
  2. 运行注册表里HKLM/SYSTEM/CurrentControlSet/Control/Session Manager/BootExecute定义的程序,一般默认的是运行Autochk
  3. 执行HKLM/SYSTEM/CurrentControlSet/Control/Session Manager/PendingFileRenameOperations表键中的延迟,删除,改名操作
  4. 加载HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Control/Session Manager/KnownDLLs 初始化paging files和注册表
  5. 创建系统环境变量,这些定义在HKLM/System/CurrentControlSet/Session Manager/Environment
  6. 加载和初始化Win32子系统的内核模块Win32k.sys
  7. 创建Win32子系统服务器进程,包括Csrss.exe并创建Winlogon.exe进程。

在注册表的HKLM/SYSTEM/CurrentControlSet/Control/Session Manager下面,你可以找到许多配置信息,它们驱动了Smss.exe的初始化步骤。Smss.exe中的主线程在执行了这些初始化步骤以后, 一直在Csrss.exe和Winlogon.exe的进程句柄上等待。如果这两个进程中的任何一个非正常终止了,则Smss让系统崩溃掉(崩溃的代码是 STATUS_SYSTEM_PROCESS_TERMINATED或0xC000021A),因为Windows要依赖于这两个进程的存在才能运行得下去。(拓展阅读:svchost.exe是什么进程?)

同时Smss.exe等待加载子系统的请求、调试事件,以及创建新的终端服务器会话(terminal server sessions)的请求。终端服务会话(Terminal Services session)的创建是由Smss.exe来完成的。当Smss.exe接到一个创建会话的请求时,它首先调用NtSetSystemInformation,请求建立内核模式的会话数据结构。又依次调用内部的内存管理器函数MmSessionCreate, 该函数建立起会话虚拟地址空间,该地址空间中包含会话中的换页内存池,以及由Win32子系统的内核模式部分(Win32k.sys)和其他的会话空间设备驱动程序所分配的、属于每个会话的数据结构。然后,Smss.exe为该会话创建Winlogon.exe和Csrss.exe的实例。