乌市至深圳火车:Windows启动的过程?

来源:百度文库 编辑:神马品牌网 时间:2024/05/08 01:33:37
Windows启动的过程是怎么样的?从开机到桌面显示出来它都做了些什么?
能详细地说说吗?

系统启动的过程如下(OS以Windows为例):

1、接通电源,点亮显示器,机箱上的指示灯闪烁(此时电源开始向主板及其它设备供电,同时CPU执行跳转指令,启动BIOS检测,此时系统BIOS首先进行POST);

2、系统BIOS检测显示卡和其它设备的BIOS,完成后发出嘟的响声,随后显示器检测显卡信息,显示器显示显卡信息;

3、系统BIOS显示自己的启动画面;

4、系统BIOS检测和显示CPU类型和频率,然后开始测试所有的内存;

5、系统BIOS检测电脑中安装的标准硬件设备,包括硬盘、光驱、串、并口设备、软驱等,并自动检测和设置内存的定时参数、硬盘参数和访问模式等;

6、系统BIOS检测和配置系统中安装的即插即用设备,同时为该设备分配中断、DMA通道和I/O断口等资源,并在屏幕上显示设备的名称和型号等信息;

7、在所有硬件都检测完毕后,系统BIOS会重新刷屏并在屏幕上方显示包含有标志硬件设备信息、使用资源相关参数的表格(如果设置了密码,则在刷屏之前会要求输入密码);

8、系统更新ESCD;

9、系统BIOS根据用户指定的启动顺序从软、光、硬盘或其它存储设备启动,同时读取并执行启动盘上的主引导记录,硬盘将磁头定位在物理扇0柱0面1扇上,接着先后读取扇区结束标志55AAH,主引导记录MBR,硬盘分区表HDPT,然后根据硬盘分区表提供的数据,磁盘将磁头定位在活动分区(即主DOS引导分区)的引导扇区上(一般为物理扇0柱1面1扇),接着先后读取扇区结束标志55AAH和操作系统参数。该过程将操作系统读取内存中,把存储在ROM中的Bootstrap Loader程序和自诊断程序移动到RAM,然后系统会执行Io.sys和Msdos.sys两个文件,此时屏幕上会出现“Starting Windows98 ......”的信息。

Windows启动时需要Command.com,Io.sys,Msdos.sys,Drvspace.bin四个文件,在初始化过程中还需要读Autoexec.bat,Config.sys,System.ini,Win.ini,

User.dat,System.dat六个文件。

在进入蓝天白云的画面后,系统将执行Config.sys(如果配置了)和Command.com文件,使电脑能够进入DOS的实模式,启动基本成功。

然后根据User.dat,System.dat,System.ini,Win.ini等读取相关文件,系统自动对Windows进行初始化,此时屏幕已经黑屏,并在左上角出现一个闪烁的光标,与此同时启动过程将读取Windows的注册表文件,并完成启动过程,出现Windows的初始画面,就可以运行Windows系统了。

10、Windows开始检测硬件与周边设备,并载入各类驱动程序与虚拟设备驱动程序;

11、载入系统安装的字体;

12、显示桌面壁纸;

13、执行随Windows一同启动的程序;

当Windows完成登录过程,鼠标指针从繁忙到安静,除桌面上的图标,你还看到了什么?也许表面没什么变化,但你有没有注意到,你的系统托盘区多出了许多图标,你的进程表中出现了很多的进程!Windows在启动的时候,自动加载了很多程序,你知道它们是在什么地方被加载的吗?

许多程序的自启动,给我们带来了很多方便,这是不争的事实,但是否每个自启动的程序对我们都有用呢?更甚者,也许有病毒或木马在自启动行列,而你却不知!

到现在,你是不是觉得了解自启动文件的藏身之处有必要呢?那好,下面我就一一指出,让它们无外可藏!

其实Windows2000/XP中的自启动文件,除了从以前系统中遗留下来的Autoexec.bat文件中加载外,按照两个文件夹和9个核心注册表子键来自动加载程序的。

1)“启动”文件夹--最常见的自启动程序文件夹。它位于系统分区的“Documents and Settings-->User-->〔开始〕菜单-->程序”目录下。这时的User指的是你登录的用户名。

2)“All Users”中的自启动程序文件夹--另一个常见的自启动程序文件夹。它位于系统分区的“Documents and Settings-->All User-->〔开始〕菜单-->程序”目录下。前面提到的“启动”文件夹运行的是登录用户的自启动程序,而“All Users”中启动的程序是在所有用户下都有效(不论你用什么用户登录)。

3)“Load”键值--一个埋藏得较深的注册表键值。位于〔HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Windows\load〕主键下。

4)“Userinit”键值--它则位于〔HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Winlogon\Userinit〕主键下,也是用于系统启动时加载程序的。一般情况下,其默认值为“userinit.exe”,由于该子键的值中可使用逗号分隔开多个程序,因此,在键值的数值中可加入其它程序。

5)“Explorer\Run”键值--与“load”和“Userinit”两个键值不同的是,“Explorer\Run”同时位于〔HKEY_CURRENT_USER〕和〔HKEY_LOCAL_MACHINE〕两个根键中。它在两个中的位置分别为〔HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\Run〕和〔HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\Run〕下。

6)“RunServicesOnce”子键--它在用户登录前及其它注册表自启动程序加载前面加载。这个键同时位于〔HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunServicesOnce〕和〔HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunServicesOnce〕下。

7)“RunServices”子键--它也是在用户登录前及其它注册表自启动程序加载前面加载。这个键同时位于〔HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunServices〕和〔HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunServices〕下。

8)“RunOnce\Setup”子键--其默认值是在用户登录后加载的程序。这个键同时位于〔HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunOnce\Setup〕和〔HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunOnce\Setup〕下。

9)“RunOnce”子键--许多自启动程序要通过RunOnce子键来完成第一次加载。这个键同时位于〔HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunOnce〕和〔HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunOnce〕下。位于〔HKEY_CURRENT_USER〕根键下的RunOnce子键在用户登录扣及其它注册表的Run键值加载程序前加载相关程序,而位于〔HKEY_LOCAL_MACHINE〕主键下的Runonce子键则是在操作系统处理完其它注册表Run子键及自启动文件夹内的程序后再加载的。在Windows XP中还多出一个〔HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunOnceEX〕子键,其道理相同。

10)“Run”子键--目前最常见的自启动程序用于加载的地方。这个键同时位于〔HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run〕和〔HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run〕下。其中位于〔HKEY_CURRENT_USER〕根键下的Run键值紧接着〔HKEY_LOCAL_MACHINE〕主键下的Run键值启动,但两个键值都是在“启动”文件夹之前加载。

11)再者就是Windows中加载的服务了,它的级别较高,用于最先加载。其位于〔HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services〕下,看到了吗,你所有的服务加载程序都在这里了!

12)Windows Shell——它位于〔HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Winlogon\〕下面的Shell字符串类型键值中,基默认值为Explorer.exe,当然可能木马程序会在此加入自身并以木马参数的形式调用资源管理器,以达到欺骗用户的目的。

13)BootExecute——它位于注册表中〔HKEY_LOCAL_MACHINE\System\ControlSet001\Session Manager\〕下面,有一个名为BootExecute的多字符串值键,它的默认值是"autocheck autochk *",用于系统启动时的某些自动检查。这个启动项目里的程序是在系统图形界面完成前就被执行的,所以具有很高的优先级。

14)策略组加载程序——打开Gpedit.msc,展开“用户配置——管理模板——系统——登录”,就可以看到“在用户登录时运行这些程序”的项目,你可以在里面添加。在注册表中[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Group Policy Objects\本地User\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\Run]你也可以看到相对应的键值。

当Windows完成登录过程,鼠标指针从繁忙到安静,除桌面上的图标,你还看到了什么?也许表面没什么变化,但你有没有注意到,你的系统托盘区多出了许多图标,你的进程表中出现了很多的进程!Windows在启动的时候,自动加载了很多程序,你知道它们是在什么地方被加载的吗?

许多程序的自启动,给我们带来了很多方便,这是不争的事实,但是否每个自启动的程序对我们都有用呢?更甚者,也许有病毒或木马在自启动行列,而你却不知!

到现在,你是不是觉得了解自启动文件的藏身之处有必要呢?那好,下面我就一一指出,让它们无外可藏!

其实Windows2000/XP中的自启动文件,除了从以前系统中遗留下来的Autoexec.bat文件中加载外,按照两个文件夹和9个核心注册表子键来自动加载程序的。

1)“启动”文件夹--最常见的自启动程序文件夹。它位于系统分区的“Documents and Settings-->User-->〔开始〕菜单-->程序”目录下。这时的User指的是你登录的用户名。

2)“All Users”中的自启动程序文件夹--另一个常见的自启动程序文件夹。它位于系统分区的“Documents and Settings-->All User-->〔开始〕菜单-->程序”目录下。前面提到的“启动”文件夹运行的是登录用户的自启动程序,而“All Users”中启动的程序是在所有用户下都有效(不论你用什么用户登录)。

3)“Load”键值--一个埋藏得较深的注册表键值。位于〔HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Windows\load〕主键下。

4)“Userinit”键值--它则位于〔HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Winlogon\Userinit〕主键下,也是用于系统启动时加载程序的。一般情况下,其默认值为“userinit.exe”,由于该子键的值中可使用逗号分隔开多个程序,因此,在键值的数值中可加入其它程序。

5)“Explorer\Run”键值--与“load”和“Userinit”两个键值不同的是,“Explorer\Run”同时位于〔HKEY_CURRENT_USER〕和〔HKEY_LOCAL_MACHINE〕两个根键中。它在两个中的位置分别为〔HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\Run〕和〔HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\Run〕下。

6)“RunServicesOnce”子键--它在用户登录前及其它注册表自启动程序加载前面加载。这个键同时位于〔HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunServicesOnce〕和〔HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunServicesOnce〕下。

7)“RunServices”子键--它也是在用户登录前及其它注册表自启动程序加载前面加载。这个键同时位于〔HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunServices〕和〔HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunServices〕下。

8)“RunOnce\Setup”子键--其默认值是在用户登录后加载的程序。这个键同时位于〔HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunOnce\Setup〕和〔HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunOnce\Setup〕下。

9)“RunOnce”子键--许多自启动程序要通过RunOnce子键来完成第一次加载。这个键同时位于〔HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunOnce〕和〔HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunOnce〕下。位于〔HKEY_CURRENT_USER〕根键下的RunOnce子键在用户登录扣及其它注册表的Run键值加载程序前加载相关程序,而位于〔HKEY_LOCAL_MACHINE〕主键下的Runonce子键则是在操作系统处理完其它注册表Run子键及自启动文件夹内的程序后再加载的。在Windows XP中还多出一个〔HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunOnceEX〕子键,其道理相同。

10)“Run”子键--目前最常见的自启动程序用于加载的地方。这个键同时位于〔HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run〕和〔HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run〕下。其中位于〔HKEY_CURRENT_USER〕根键下的Run键值紧接着〔HKEY_LOCAL_MACHINE〕主键下的Run键值启动,但两个键值都是在“启动”文件夹之前加载。

11)再者就是Windows中加载的服务了,它的级别较高,用于最先加载。其位于〔HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services〕下,看到了吗,你所有的服务加载程序都在这里了!

12)Windows Shell——它位于〔HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Winlogon\〕下面的Shell字符串类型键值中,基默认值为Explorer.exe,当然可能木马程序会在此加入自身并以木马参数的形式调用资源管理器,以达到欺骗用户的目的。

13)BootExecute——它位于注册表中〔HKEY_LOCAL_MACHINE\System\ControlSet001\Session Manager\〕下面,有一个名为BootExecute的多字符串值键,它的默认值是"autocheck autochk *",用于系统启动时的某些自动检查。这个启动项目里的程序是在系统图形界面完成前就被执行的,所以具有很高的优先级。

14)策略组加载程序——打开Gpedit.msc,展开“用户配置——管理模板——系统——登录”,就可以看到“在用户登录时运行这些程序”的项目,你可以在里面添加。在注册表中[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Group Policy Objects\本地User\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\Run]你也可以看到相对应的键值。