前些天,抽空研究了系统封装工具的打包安装机制,也借这个机会把Windows系统启动过程给看了。现在简单做个分享,谈谈对win7启动过程的理解,然后再分析下进程自启动原理,说明系统封装工具是怎么引导的。
如果想了解windows原理,Windows Internals 可能是最好的读物了。这本书在注1提到,有链接可以下载阅读。
好了,回到今天的主题:Win7系统启动过程及进程自启原理。这里,先贴上win7 启动过程的示意图,后面再讲解每个步骤的过程。
windows 7 的启动流程图:
windows 7 启动的详细过程:
1、电脑加电后,先启动BIOS进行自检,然后加载硬盘的主引导记录MBR,并把控制权交给MBR(MBR在硬盘0磁道的第一个扇区,不属于任何一个分区)
2、MBR读取分区表DPT,找出并读取活动主分区的引导记录PBR(也叫DBR),PBR再把控制权交给分区下的启动管理器文件BootMgr
3、BootMgr读取启动配置\Boot\BCD,根据BCD控制显示启动菜单。在选择启动windows 7后,BootMgr将会按设定启动内核加载程序Winload.exe
4、Winload加载内核程序(Ntoskrnl.exe)、硬件抽象层(hal.dll)、注册表SYSTEM项(system32\config\system)、设备驱动,然后控制权交给Ntoskrnl.exe
5、Ntoskrnl初始化执行体子系统,并初始化引导的和系统的设备驱动启动程序,为原生应用程序(如SMSS等)初始化运行环境,控制权交给SMSS.exe
6、SMSS初始化注册表,创建系统环境变量,加载Win32子系统(Win32k.sys),启动子系统进程(CSRSS、WinInit、Winlogon),控制权交给WinInit.exe和Winlogon.exe
7、WinInit启动服务控制管理器(SCM),本地安全子系统(LSASS),本地会话管理(LSM)
8、Winlogon加载登录界面程序(LogonUI),显示交互式登录对话框。等待用户登录后,根据注册表配置启动UserInit.exe和Explorer.exe
HKLM\SOFTWARE\Microsoft\WindowsNT\Current Version\Winlogon\Userinit
HKCU/HKLM\SOFTWARE\Microsoft\Windows NT\Current Version\Winlogon\Shell
9、UserInit启动用户所有自启动进程,建立网络连接,启动生效的组策略
10、Explorer提供交互式图形界面,包括桌面和文件管理。
到这里,windows启动就完成了。
上篇文章提到了系统封装工具,这里说下系统封装工具的引导原理。
windows启动时,Winlogon.exe会启动所有预设的自启动进程,如下:
注册表:
HKLM\SYSTEM\Setup\CmdLine
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies \Explorer\Run
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
HKCU\Software\Microsoft\Windows NT\CurrentVersion\Windows \Run
HKCU\Software\Microsoft\Windows\CurrentVersion\Run
HKCU\Software\Microsoft\Windows\CurrentVersion\RunOnce
如果是64位系统,还会查找以下路径:
HKLM\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Run
HKLM\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\RunOnce
文件路径:
\Documents and Settings\All Users\Start Menu\Programs\Startup
\Documents and Settings\<username>\Start Menu\Programs\Startup
通常,系统封装工具的启动项都会记录在 HKLM\SYSTEM\Setup\CmdLine。这是因为,HKLM\SYSTEM\Setup\CmdLine是在显示登录界面之前执行,其他是在用户登录之后执行。
注意了,CmdLine项要配合 SetupType,就是 HKLM\SYSTEM\Setup\SetupType
SetupType值设定如下:
0=什么都不做,直接显示登录界面
1=运行CMDLine,然后重启
2=运行CMDLine,然后显示登录界面
这样,系统启动时就会执行系统封装工具,然后重启,或显示登录界面。
2016/9/5 补充64位系统的启动路径说明
文献资料:
分享到:
相关推荐
Windows XP 启动盘是系统恢复和安装过程中的重要工具,尤其在系统崩溃无法正常启动时,它可以作为引导媒介帮助修复或重新安装操作系统。传统的启动盘往往只能引导到MS-DOS,而无法直接启动Windows XP。本文将详细...
Linux 系统的启动过程通常由引导装载程序(Boot Loader)管理,如文章中提到的LILO或GRUB。这些引导加载器允许用户在启动时选择要运行的操作系统,如Linux或Windows。配置引导加载程序时,需要指定它安装的位置...
"浅谈Linux操作系统安全防范策略" Linux操作系统安全防范策略是当前网络安全的一个重要方面。随着网络的不断发展,网络安全是我们应该时刻注意的问题。本文主要从系统启动和登录的安全性、限制网络访问、Linux病毒...
此外,了解UEFI(统一可扩展固件接口)对于现代计算机系统的启动和初始化过程也是有益的,虽然它不是SDK的直接部分,但在Windows开发中了解这一层面的知识可以帮助你更好地理解计算机系统的整体运作。 总之,...
USB CDROM启动盘的制作是一个涉及到计算机硬件、操作系统以及软件操作的高级技术,主要用于需要从U盘引导计算机启动的场景。以下详细说明了制作USB CDROM启动盘的相关知识点: 1. USB CDROM启动盘的制作理论依据:...
《浅谈Linux系统的安装》这篇文章主要探讨了在个人计算机上安装Linux操作系统的两种常见方法:双系统安装和通过虚拟机安装。以下是对文章内容的详细解释: 1. 双系统安装Linux(以Ubuntu 14.04 LTS为例): - 首先...
Windows服务是一种在独立的Windows会话中运行的长期执行应用程序,通常在计算机启动时自动启动。服务可以暂停和重启,而且不会显示用户界面,因此特别适合在服务器环境或后台任务中使用。服务还能以特定用户账户或...
IBM的System/360系列机器和OS/360操作系统是大型机时代的里程碑,它们为后续的MFT、MVT等系统奠定了基础,并在《人月神话》中详细描述了其开发过程中的挑战。 UNIX操作系统在小型机时代崛起,其开源特性使得它广泛...
在系统启动后,程序只能访问由MMU转换后的虚拟地址,而非直接的物理地址。对于X86,访问I/O端口可以绕过MMU,而访问存储器则需要通过MMU。但在非X86架构上,即使是访问I/O端口也需要经过MMU映射。 为了提高程序的可...
对于使用Windows身份认证的系统,可以通过Windows系统的安全机制强化口令老化和最小长度。DBA还应确保只有必要时才增加SQL Server账户,避免不必要的安全风险。 数据库维护方面,备份是保障数据安全的关键措施。DBA...
### 多媒体机房管理浅谈 #### 一、引言 随着信息技术的快速发展,多媒体机房成为现代教育和培训的重要组成部分。多媒体机房不仅集成了计算机、电视、录像等多种功能,还能够处理文字、数据、图像、音频、视频等...
建议不要将其他应用软件安装在此分区,以保持系统的稳定性和快速启动。 2. **D盘**:“program”分区,10GB,FAT32分区格式。用于存放各种应用程序,建议按照功能类别创建子文件夹进行归类。 3. **E盘**:“GAME”...
启动代码通常包含初始化CPU的关键步骤,了解这部分代码对于理解系统的启动过程非常有帮助。 ##### 4.3 添加源文件 - **步骤1**: 在项目中添加新的源文件。可以是C文件或汇编文件,本例中选择添加汇编文件。 - **...
NFS主要面向类UNIX系统,基于RPC,而Samba使用CIFS/SMB协议,支持Windows系统。NFS更适合于Linux环境,而Samba更适用于混合平台的环境。 **NFS的应用场景:** 1. **服务器集群**:NFS可以让多台服务器共享存储,...
WinCC系统(Windows Control Center)被应用在主控室内,提供给操作员直观的操作界面。通过WinCC,操作员可以监控和调整连铸机的各个环节,比如大包回转台控制系统、二冷水系统的PID调节控制、以及振动和拉矫自动...
### 4G内存不浪费——浅谈虚拟硬盘使用技巧 #### 一、引言 在当前内存价格亲民的时代,4GB内存已成为标配。然而,对于仅能识别约3GB内存容量的32位系统而言,剩余的1GB内存似乎成了闲置资源。本文将详细介绍如何...
出现故障时系统可实现限制连锁保护,如系统启动时胶带对应的除尘器启动,系统停止时先停止供煤设备。 2) 自动配煤。根据煤炭种类和仓位需求,PLC技术实现自动配煤。配煤按顺序进行,从超低煤位仓至低煤位仓,直至...
然而,对于32位操作系统,例如Windows XP,其最大只能识别约3GB的内存,剩余部分通常被视为未使用。通过虚拟硬盘技术,我们可以将这部分未被识别的内存有效地利用起来,将其转化为高速的虚拟硬盘,从而避免资源的...
服务器端操作系统可以是Windows NT Server 4.0、Windows 2000 Server等,而客户端支持Windows 9x/Me、Windows 2000 Professional、XP等操作系统。服务器端负责建立数据库、存储数据、管理数据以及处理来自客户端的...