由于是位于HKEY_CURRENT_USER下,因此该项只适用于当前这个用户,不适用于其他的用户。在用户注册进入Windows系统时,自动地运行该项下定义的程序或文档。其中Run子项中定义了每次系统启动时都需要运行的程序,值项类型是字符串值,值项的名称是该运行程序的说明,值项的值是程序的名称;RunOnce子项中定义了只运行一次的程序,在该项下的值项中定义的程序运行起来后,该项下的值项就会被删除掉,这通常用于程序的安装过程;RunEx和RunOnceEx的作用和Run、RunOnce是一样的,是Run、RunOnce的扩充形式。
(9)注册表项HKEY_LOCAL_MACHINE\Software\Microsoft\ Windows\CurrentVersion下的Run、RunOnce、RunEx和RunOnceEx子项(适用于Windows 9x/Me/NT/2000/XP)
该项和HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion下的 Run、RunOnce、RunEx和RunOnceEx作用一样,不同之处在于,由于它位于HKEY_LOCAL_ MACHINE下,所以它将应用于所有的用户。在启动顺序上,系统首先启动HKEY_LOCAL_MACHINE下定义的启动项目,再去启动 HKEY_CURRENT_USER下定义的启动项目。
我们需要检查的是,对于默认情况以外定义的程序,需要检查其对应的软件。很多软件将自动启动程序放在注册表中的这个位置。例如Norton Antivirus防毒软件,就会在注册表项HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\ CurrentVersion\Run下新建一个值项NPS Event Checker,值为C:\PROGRA~1\Navnt\ npscheck.exe。
下表中列出了默认情况下,Windows系统中Run下的自动运行项目。
(10)检查非注册表部分
首先检查启动文件和磁盘引导扇区。对于Windows 9x/Me,启动文件是启动盘目录下的IO.sys和Command.com文件。同时,还包括Autoexec.bat文件中定义的程序文件,以及 Config.sys文件中装载的程序文件。对于Windows NT/2000/XP,启动文件是启动盘目录下的Ntldr,Ntdetect.com、Ntbootdd.sys(如果boot.ini文件使用 SCSI语法)、Bootsect.dos(如果使用了多重启动,对应于启动到DOS环境),以及Winnt目录下的Ntoskrnl.exe(核心程序文件)和Hal.dll(硬件抽象层)。
其次,对于Windows 9x,还需要检查Win.ini文件和System.ini文件。Win.ini文件中的"run="和"load="行,定义了Windows 9x启动时需要装载的程序。
最后,需要检查"开始"菜单中"程序"中的"启动"程序组,"启动"程序组中存放了Windows正常启动起来后,需要启动的程序。
8.禁止旧版本的"自动运行"程序列表(适用范围:Windows 2000/XP)
注册表项HKEY_LOCAL_MACHINE_\Software\Microsoft\Windows\CurrentVersion\ Run和HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunOnce 下存放的是"自动运行"的程序列表,它们是旧版本的"自动运行"程序列表,在Windows95/98/NT中就已经有了。在注册表中有两个值项,可以禁止这两个旧版本列表起作用,替代它们的是RunEx和RunOnceEx注册表项。