由于 Windows 每个版本都在不断改进,其启动过程也有不同,此处所说的指的 Windows 操作系统是指 Windows Vista 以上版本。
- BIOS寻找可启动设备
- 可启动设备活动分区的主启动记录(MBR),其中记录了分区信息和引导程序等
- 加载引导程序Bootmgr(其他操作系统可能有其他引导程序)
- 读取BCD,其中记录了操作系统启动项,可由用户做出选择
- 用户选择启动项后,Bootmgr将控制权传给Winload.exe
- Winload.exe加载相应核心(Ntoskrnl.exe) 和硬件抽象层 (HAL.dll)
- Winload.exe继续加载系统注册表配置单元(system)文件
- 从注册表(HKEY_LOCAL_MACHINE\SYSTEM\Select)中读取相应的设置集(Control Sets)
- Winload.exe继续加载引导型(Boot)驱动也就启动值为0的核心驱动,如文件系统驱动、硬盘控制器驱动。
- 将控制权传Ntoskrnl.exe,其继续加载system类型的驱动,也就是启动值为1的驱动。
- 将控制权传递给会话管理器 (SMSS)。其加载注册表的剩余部分,配置运行 Win32 子系统 (Win32k.sys)
- Win32k.sys将系统从文本模式切换至图形模式。
- 启动 Windows 子系统用户模式部分 (Csrss.exe)。
- 加载用于创建用户会话的 Winlogon进程。
- 会话管理器(SMSS)继续加载剩余的非必要设备驱动程序
- Winlogon.exe 启动服务子系统 (Services.exe),也称为服务控制管理器 (SCM)
- Winlogon.exe启动安全子系统(Lsass.exe)
- Winlogon.exe根据注册表中具体的值来启动外壳程序,默认为 LogonUI.exe,此时即显示登录画面。