欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  科技

注册表 的一些知识介绍

程序员文章站 2022-03-05 17:46:12
如何打开注册表   Win98/98SE/Me   运行中输入regedit.exe 无权限限制   Win2000/XP   1·开始>>运行.中输入regedit   2.运行中输入regedt32   第一种... 09-06-01...
如何打开注册表
  win98/98se/me
  运行中输入regedit.exe 无权限限制
  win2000/xp
  1·开始>>运行.中输入regedit
  2.运行中输入regedt32
  第一种方法打开的注册表编辑器和win98下的一样,而且功能相同,而使用第二种方法打开的注册表编辑器则可以方便的设置权限,建议网络管理员使用第2种方法打开注册表编辑器修改需要修改的权限设置部分以免被他人恶意修改。
  windows vista
  1.在开始菜单搜索框中输入regedit并按回车键.(需要管理员权限)
  2.在运行中输入regedit.exe(需要管理员权限)
注册表数据库文件的存放位置
  2000/xp注册表文件按功能来分,也是由系统注册表文件和用户注册表文件两类组成的
  注册表文件存放系统的所有设置信息:
  系统设置和缺省用户配置数据存放在系统\系统文件夹\system32\config文件夹下的6个文件,default、sam、security、software、userdiff和system中,而用户的配置信息存放在系统所在磁盘的\documents and setting\文件夹,包括ntuser.dat ntuser.ini ntuser.dat.log
注册表的由来
  在windows 3.x操作系统中,注册表是一个极小文件,其文件名为reg.dat,里面只存放了某些文件类型的应用程序关联,大部分的设置放在win.ini、system.ini等多个初始化ini文件中。由于这些初始化文件不便于管理和维护,时常出现一些因ini文件遭到破坏而导致系统无法的启动的问题。为了使系统运行得更为稳定、健壮,windows 95/98设计师们借用了windows nt中的注册表的思想,将注册表引入到windows 95/98操作系统中,而且将ini文件中的大部分设置也移植到注册表中,因此,注册表在windows 95/98操作系统的启动、运行过程中起着重要的作用。
注册表的作用
  注册表是为windows nt和windows95中所有32位硬件/驱动和32位应用程序设计的数据文件。16位驱动在winnt下无法工作,所以所有设备都通过注册表来控制,一般这些是通过bios来控制的。在win95下,16位驱动会继续以实模式方式设备工作,它们使用system.ini来控制。16位应用程序会工作在nt或者win95 下,它们的程序仍然会参考win.ini和system.ini文件获得信息和控制。
  在没有注册表的情况下,操作系统不会获得必须的信息来运行和控制附属的设备和应用程序及正确响应用户的输入。
  在系统中注册表是一个记录32位驱动的设置和位置的数据库。当操作系统需要存取硬件设备,它使用驱动程序,甚至设备是一个bios支持的设备。无bios支持设备安装时必须需要驱动,这个驱动是独立于操作系统的,但是操作系统需要知道从哪里找到它们,文件名、版本号、其他设置和信息,没有注册表对设备的记录,它们就不能被使用。
  当一个用户准备运行一个应用程序,注册表提供应用程序信息给操作系统,这样应用程序可以被找到,正确数据文件的位置被规定,其他设置也都可以被使用。
  注册表保存关于缺省数据和辅助文件的位置信息、菜单、按钮条、窗口状态和其他可选项。它同样也保存了安装信息(比如说日期),安装软件的用户,软件版本号和日期,序列号等。根据安装软件的不同,它包括的信息也不同。
  然而,一般来说,注册表控制所有32位应用程序和驱动,控制的方法是基于用户和计算机的,而不依赖于应用程序或驱动,每个注册表的参数项控制了一个用户的功能或者计算机功能。用户功能可能包括了桌面外观和用户目录。所以,计算机功能和安装的硬件和软件有关,对所有用户来说项都是公用的。
  有些程序功能对用户有影响,有些是作用于计算机而不是为个人设置的,同样的,驱动可能是用户指定的,但在很多时候,它们在计算机中是通用的。
  注册表控制用户模式的例子有:
  控制面板功能;
  桌面外观和图标;
  网络参数;
  浏览器功能性和特征;
  那些功能中的某些是和用户无关的,有些是针对用户的。
  计算机相关控制项基于计算机名,和登陆用户无关。控制类型的例子是安装一个应用程序,不管是哪个用户,程序的可用性和存取是不变的,然而,运行程序图标依赖于网络上登陆的用户。网络协议可用性和优先权基于计算机,但是当前连接和用户信息相关。
  这里是在注册表中基与计算机控制条目的一些例子:
  存取控制;
  登陆确认;
  文件和打印机共享;
  网卡设置和协议;
  系统性能和虚拟内存设置;
  在系统中注册表控制所有32位应用程序和它们的功能及多个应用程序的交互,比如复制和粘贴,它也控制所有的硬件和驱动程序。虽然多数可以通过控制面板来安装和设置,理解注册表仍是做winnt和win95系统管理基本常识。
与注册表有关的术语
  1、hkey :“根键”或“主键”,它的图标与资源管理器中文件夹的图标有点儿相像。windows98将注册表分为六个部分,并称之为 hkey_name,它意味着某一键的句柄。
  2、key(键):它包含了附加的文件夹和一个或多个值。
  3、subkey(子键):在某一个键(父键)下面出现的键(子键)。
  4、branch(分支):代表一个特定的子键及其所包含的一切。一个分支可以从每个注册表的顶端开始,但通常用以说明一个键和其所有内容。
  5、value entry(值项):带有一个名称和一个值的有序值。每个键都可包含任何数量的值项。每个值项均由三部分组成:名称,数据类型,数据。
  6、 字符串(reg_sz):顾名思义,一串ascii码字符。如“hello world”,是一串文字或词组。在注册表中,字符串值一般用来表示文件的描述、硬件的标识等。通常它由字母和数字组成。注册表总是在引号内显示字符串。
  7、二进制(reg_binary):如 f03d990000bc ,是没有长度限制的二进制数值,在注册表编辑器中,二进制数据以十六进制的方式显示出来。
  8、双 字(reg_dword):从字面上理解应该是double word ,双字节值。由1-8个十六进制数据组成,我们可用以十六进制或十进制的方式来编辑。如 d1234567 。
  9、 default(缺省值):每一个键至少包括一个值项,称为缺省值(default),它总是一个字串。
注册表的结构
  注册表是windows程序员建造的一个复杂的信息数据库,它是多层次式的。在不同系统上注册表的基本结构相同。其中的复杂数据会在不同方式上结合,从而产生出一个绝对唯一的注册表。
  计算机配置和缺省用户设置的注册表数据在winnt中被保存在下面这五个文件中:
  default,sam,security,software,system,ntuser.dat。
  
注册表的数据结构

  注册表由键(或称“项”)、子键(子项)和值项构成。一个键就是分支中的一个文件夹,而子键就是这个文件夹中的子文件夹,子键同样是一个键。一个值项则是一个键的当前定义,由名称、数据类型以及分配的值组成。一个键可以有一个或多个值,每个值的名称各不相同,如果一个值的名称为空,则该值为该键的默认值。
  在注册表编辑器(regedit.exe)中,数据结构显示如下,其中,command键是open键的子键,(默认)表示该值是默认值,值名称为空,其数据类型为reg_sz,数据值为%systemroot%/system32/notepad.exe "%1
  数据类型
  注册表的数据类型主要有以下四种:
  显示类型(在编辑器中) 数据类型 说明
reg_sz 字符串 文本字符串
reg_multi_sz 多字符串 含有多个文本值的字符串
reg_binary 二进制数 二进制值,以十六进制显示。
reg_dword 双字 一个32位的二进制值,显示为8位的十六进制值。

  [1][2]各主键的简单介绍hkey_local_machine
  hkey_local_machine是一个显示控制系统和软件的处理键。hklm键保存着计算机的系统信息。它包括网络和硬件上所有的软件设置。(比如文件的位置,注册和未注册的状态,版本号等等)这些设置和用户无关,因为这些设置是针对使用这个系统的所有用户的。
  hkey_local_machine\appevents
  为了以后在客户机上运行客户机/服务器这样的应用程序,在win95/98中appevents键是空的。应用程序实际上都驻留网络服务器上,这些键会保存部分指针。
  hkey_local_machine\config
  这个键保存着你计算机上所有不同的硬件设置(这些从控制面板的系统属性中硬件配置文件中可以创建)。这些配置在启动时通常被复制到hkcc。每个配置会被用一个键(比如0001或者0002等等)来保存,每个都是一个独立的配置。如果你只有一个单一的配置,那就只会有0001这个键
  hkey_local_machine\config01\display
  这个键表示显示的设置,如荧屏字体,窗体大小,窗体位置和分辨率等
  hkey_local_machine\config01\system
  这个键保存着系统里打印机的信息
  hkey_local_machine\config01\system\currentcontrolset\control\print\printers
  在这个键下面,有一个键是为系统上每一个打印机设置的,通过控制面板添加和删除打印机会调整这个列表
  hkey_local_machine\enum
  enum键包含启动时发现的硬件设备和那些既插即用卡的信息。win95使用总线列举在启动时通过不同的.ini文件来检测硬件信息。那些在启动时被安装的和被检测到的硬件会显示在这里。子键包括bios, esdi, flop, htree, isapnp, monitor, network, root, scsi, 和 virtual。子键名表示它们各自的硬件设备信息。
  hkey_local_machine\enum\bios
  bios键保存着系统中所有即插即用设备的信息。它们用一套代码数列出,包括每一个键的详细说明,举例,*pnp0400是并行口lpt1的键。如果lpt1并不具备即插即用功能,它就会别列入到enum下的root键中
  hkey_local_machine\enum\root
  root键包括所有非即插即用设备的信息。在这里,我们可以迅速断定哪些设备是即插即用,那些不是。比如scsi适配器,这个设备必须符合win95中一个键名为forcedconfig的硬件设置,这个不会改变。
  hkey_local_machine\enum\network
  win95的网络功能在这个键有详细说明,子键包括了每个已经安装的主要的服务和协议。
  hkey_local_machine\hardware
  hardware子键包括了两个多层的子键:description键,它包含了*处理器和一个浮点处理器的信息。还有一个设备映射键,它下面的串行键列出你所有的com端口。这个hardware键仅保存超级终端程序的信息,及数学处理器和串行口。
  hkey_local_machine\network
  这个键仅保存网络登陆信息。所有网络服务细节都保存在hkey_local_machine\enum\network这个键中。这个键有一个子键,logon,包括了lmlogon(本地机器登陆?0=false 1=true)的值,logonvalidated(必须登陆验证),策略处理,主登陆方式(windows登陆 ,微软网络客户方式等),用户名和用户配置。
  hkey_local_machine\security
  security 有两个子键,第一个是存取(它最终致使一个远程键列出网络安全资源,存取权限等)和提供(包括列出网络地址和地址服务器),这个键被保留用在以后使用高级安全功能和nt兼容性上
  hkey_local_machine\software
  这个键列出了所有已安装的32位软件和程序的.ini文件。它包括了变化,依靠软件安装。那些程序的控制功能在这里的子键中列出。多数子键简单的列出了安装软件的版本号。
  我们在\microsoft\windows\current version下发现了一些有意思的设置,它有如下子键:
  1.app paths: 你曾经安装过的所有32位软件的位置。
  2.applets, compression, controls folder : 包括下控制面板象显示属性那样属性条的附件。
  3.detect, explorer :很多有意思的子键如namespace keys of desktop和my computer----它们指出了回收站和拨号网络的clsid行----和提示子键可以让你建立自己的提示。
  4.extensions : 一个扩展联系的列表,当前相关联的扩展名和比特定的执行文件更适合的目标类型。
  5.fonts, fontsize, fs templates :系统属性条中所选择文件系统模板, 服务器,桌面计算机或者笔记本电脑信息。
  6.ms-dos emulation :包括一个应用程序兼容子键 为大量过时的程序二进制键所设。
  7.ms-dos options :在dos模式下的设置,如himem.sys,cd-roms等。
  8.network :网络驱动的配置。
  9.nls, policies :系统管理员认为你不应该去做的事。
  10.profilelist :所有可以登陆你计算机的用户名列表。
  11.在windows启动时运行的程序的神秘之处是它们并不在开始菜单的启动文件夹中。它们在hkey_local_machine\microsoft\windows\currentversion\下的子键中被执行。
  run : 程序在启动时运行
  runonce : windows初始化时程序在启动时只运行一次,这个经常用在当安装软件之后需要重新启动系统的时候,所以这个键一般都是空的。
  runservices : 它就象run一样,但是包含了“服务”,它不象一般的程序它们是比较重要的或者是“系统”程序。但是它们不是vxds,就象mcafee或者regserv工作一样。
  runservicesonce : 它只运行一次,但是是“系统自身”的安装(大量的windows安装参数:通常键值包括了系统目录位置,和win95更新,可选项安装组件,和windows启动目录的子键。
  注意:在很多黑客木马软件中,常常在这里添加键值(一般是在run中),这样使得木马软件可以随着windows启动而启动并且很隐秘。在这里可以查看不正常的启动项和去掉无用的运行程序(比如我就很不喜欢超级解霸的自动伺服器,在这里可以去掉它)。
  12.shareddlls:共享dll的列表,每一个都给出了在一个不可知系统的一个数字等级。
  13.shell extensions:列出了“被认可的”ole注册条,和相应的clsid连接。
  14.shellscrap :这个包含了一个prioritycacheformats的子键,它包括了一个空的有限值,它更象过去smartdrive命令行参数的派生。
  15.time zones : 主键值是你现在的时区;子键定义了所以可能的时区。
  16.uninstall:这个保存了程序在添加/删除程序对话框的显示;子键包含了指向反安装程序的路径。和安装向导相似.......)winlogon(包含了合法登陆布告的文本句)
  hkey_local_machine\system\currentcontrolset
  这个子键包括设备驱动和其他服务的描述和控制。不同于windows nt,win95只包括限制驱动的控制设置信息。
  hkey_local_machine\system\currentcontrolset\control
  这个子键包括了win95控制面板中的信息。不要编辑这些信息,因为一些小程序的改变在很多地方,一个丢失的项会使这个系统变的不稳定
  hkey_local_machine\system\currentcontrolset\services
  这个键包括了所有win95的标准服务。所有被添加的服务和设备,每个标准的服务键包括了它的设置和辨认设置。
  hkey_local_machine\system\currentcontrolset\services\arbitrators
  atbitrators键包括了当两个设备共同占用同样的设置需要解决的信息。四个子键包括了内存地址,冲突,dma,i/o端口冲突和irq冲突。
  hkey_local_machine\system\currentcontrolset\services\class
  class键包括了所有win95支持的设备classes控制,这些和你在添加新硬件出现的硬件组很类似,还包括了这些设备如何安装的信息。
  hkey_local_machine\system\currentcontrolset\services\inetaccs
  这个键包括了关于这个系统变化的ie附件的可用性,它仅在你安装过ie2。0或者更高版本才出现。
  hkey_local_machine\system\currentcontrolset\services\msnp32
  msnp32描述了客户机如何在microsoft网络中实现功能,它包括了认证过程和认证者的信息。
  hkey_local_machine\system\currentcontrolset\services\nwnp32
  nenp32键描述了windows客户如何在netware网络中工作功能,它包括了关于认证过程和证明者的信息。
  hkey_local_machine\system\currentcontrolset\services\remoteaccess
  在这个键里包括需要远程工作在win95系统上的信息,有认证参数,主机信息,和为了建立一个拨号连接工作的协议信息。
  hkey_local_machine\system\currentcontrolset\services\snmp
  这个键包括了所以snmp(简单网络管理协议)的参数。它包括了允许的管理,配置陷阱,和有效的团体。
  hkey_local_machine\system\currentcontrolset\services\vxd
  vxd键包括了win95中所有32位虚拟设备驱动信息,win95自动管理它们,所以不必要用注册表编辑器编辑它们,所以的静态vxds用子键列出。
  hkey_local_machine\system\currentcontrolset\services\webpost
  webpost键包括了所有装载的internet邮局的设置,如果你连接一个isp,并且它列出载这里,你应该给自己选则一个服务器。
  hkey_local_machine\system\currentcontrolset\services\winsock
  这个键列出了当连接到internet上winnsock文件的信息,如果列出了不正确的文件,你将不会连接上internet。
  hkey_local_machine\system\currentcontrolset\services\wintrust
  wintrust功能是检查从internet上下载来的文件是否有病毒,它可以确保你得到干净安全的文件。
  hkey_classes_root
  在注册表中hkey_classes_root是系统中控制所有数据文件的项。这个在win95和winnt中是相通的。hkey_classes_root控制键包括了所有文件扩展和所有和执行文件相关的文件。它同样也决定了当一个文件被双击时起反应的相关应用程序。
  hkey_classes_root被用作程序员在安装软件时方便的发送信息,在win95和winnt中,hkey_classes_root和hkey_local_machine\software\classes是相同的。程序员在运行他们的启动程序时不需要担忧实际的位置,相反的,他们只需要在hkey_classes_root中加入数据就可以了。
  在windows用户图形界面下,每件事----每个文件,每个目录,每个小程序,每个连接,每个驱动---都被看做一个对象;每个对象都有确定的属性和它联系。hkcr包含着对象类型和它们属性的列表。hkcr主要的功能被设置为:
  一个对象类型和一个文件扩展名关联
  一个对象类型和一种图标关联
  一个对象类型和一个命令行动作的关联
  定义对象类型相关菜单选项和定义每一个对象类型属性选项
  在win95中,相关菜单就是当你鼠标右击一个对象时所弹出的菜单;属性就是当你选择属性项后一个展开的对话框。用简单术语来说就是在改变hkcr中的设置可以改变一个给定文件扩展名缺省的关联。改变一个文件类型的缺省图标,和添加或者删除给定对象类型的弹出菜单内容(或者所有的对象类型)
  hkcr包括了三种基本类型的子键
  \??? 或者文件扩展名子键
  文件扩展名子键在弹出菜单上连接文件扩展名到对象类型和相关操作,属性项,和相关操作。
  \object 类型子键
  对象类型子键定义了一个对象类型在它缺省图标的项,它的弹出菜单和属性项,它的相关操作和它的clsid连接。
  \clsid 子键
  在windows下每件事都被用一个数字取代它的名字来对待。就象人往往是用名字来处理事情一样。clsid是标识所有列出的图标,应用程序,目录,文件类型等等对象的数字。是微软为制造商分配的,每一个都必须是唯一的。制造商将clsid放入安装程序文件这样就可以在安装时更新注册表。
  注册表是应用程序进行时它们需要关于做什么的指示的数据库。比如说,假定你有一个微软excel 7电子数据表的word 7文档,当你在word中双击这个电子数据表,应用程序菜单就会变成excel的菜单而且电子数据表进入编辑状态,就好像你在excel中一样。它是如何知道该做什么呢?每个excel 7创建的文件都有excel的clsid连接。word读这个clsid后,到注册表中寻找指示,依赖clsid下的数据运行.dll文件或者应用程序。
  clsid子键为对象类型提供了ole和dde信息和图标。相关菜单,或者包含在它子键中的属性项信息。这个可能是多数让人看到后觉得“恐怖”的键。每个clsid数必须是唯一的,实际上,为了这个目的微软已经出产了clsid-产生程序--这个结果导致你往往得到32位16进制的数字串,除非你是程序员,否则多数部分键看起来是很枯燥的。它们包括内存管理模式,客户机/服务器配置,和ole处理的.dll连接。
关于子键的一点注解
  1)shell:shell键有个一”action“子键,如同”open“一样,这里有一个command子键;command子键有一个缺省句值,它包含了运行程序的命令行。将一个”open“子键放在一个对象类型的shell子键中会在这个对象类型的弹出菜单上多出一个”open“选项,给这个open子键一个command(缺省命令行"c:\windows \notepad.exe %1")子键会使得打开这个对象类型时使用笔记本做为缺省应用程序。其他操作选项包括view,print,copy,virus,scan等等。
  2)shellex:shellex键有一个子键。它们包含的每一个子键指向一个为对象类型执行ole和dde功能的clsid项(比如说快速查看,一个菜单处理子键下指向一个有句值的clsid键列出了包含了文件浏览功能的.dll文件)
  3)shellnew:shellnew包含了一个“command”句,它包含了一个打开对象类型“新”文件的命令行。
  4)defaulticon:defaulticon子键包含了一个“default”句,它包括了一个指向图标的命令行(比如说,"c:\windows \system \shell32.dll,2" 2就是从0数的第三个图标,记住,是在shell32.dll中的)
  除了和它们扩展名关联扩展名和文件类型以外,它们在hkey_classes_root还有很多项。所有它们的项也都适用于nt,如界面和应用程序的执行。通常你将编辑仅仅一小部分这样的项。除了弹出菜单提示以外,所有包含在这里的项只会在安装应用程序,在程序中设置调整或者创造关联时被改变。
  没有hkey_classes_root你是不能启动系统的;你手工编辑它真的是很困难。hkey_classes_root是你需要注册标一个很重要的原因:应用程序的控制和操作这个系统。看到它的尺寸和这个处理键的复杂程度,system.ini 和 win.ini不再够用也是不用惊奇的。
  hkey_current_config
  win95一般只使用一个硬件配置文件。如果有多个硬件配置文件。hkey_local_machine\config中就会添加一个键。hkey_local_machine\config包含了hkey_local_machine中相同的数据
  在启动时,你可以选择你愿意使用的配置文件。如果有多个安装,每次系统重新启动时,你就必须选择.hkey_current_config是在启动时控制目前硬件配置的键
  在系统启动以后,任何地方的变化都会自动影响到它。程序员经常使用hkey_current_config方便的来存取配置信息。
  hkey_current_config包括了系统中现有的所有配置文件的细节。你的选择影响了哪一个硬件配置文件成为现在的。举例来说,如果配置0002被选择了,所有0002的配置信息会被映射到这些键上
  hkey_current_config允许软件和设备驱动程序员很方便的更新注册表,而不涉及到多个配置文件信息。 hkey_local_machine中同样的数据和任何注册表的变化都会同时的变化。
  hkey_dyn_data
  在hkey_dyn_data键中所有信息都是在启动时被写入的。它再现了win95在系统中控制硬件所使用的动态数据。它仅只有三个键。它们保留了系统目前状态监视所需要的很简单的信息
  在hkey_dyn_data中除了暂时文件,没有任何数据被写入硬盘。在系统每次重新启动时所有的数据被重新写入。另外,在既插即用的情况下,当设备改变状态时一些数据可能会写入。(比如说系统运行时在一个pcmcia槽中插入一块网卡)
  config manager
  配置管理包括了在win95中每个安装设备启动时的信息。在启动时它从hkey_current_config中获得它的列表并且检查每个项。如果找到一个没有在列表中列出的设备,它向系统报告这些信息来安装。如果列表中的一个设备不在系统中,它就会在这个键值中显示这个情况。
  enum
  系统中已安装的每个设备的启动状态都在这个键中被列出。如果某个设备没准备好,它就在这里显示出来。如果它准备好了,它也会显示出来。每个设备指针也被列出显示哪个注册这个设备用来做它的控制
  perfstats
  系统中所有设备的性能特征保存在这个键。它是十分难读的,但是通过系统监视器就十分容易看懂
  security
  这个键显示了登陆在这台机器和网络上的登陆用户从哪个证明者得到有效的证明
  hkey_users
  hkey_users将缺省用户和目前登陆用户的信息输入到注册表编辑器,在win95中,它仅被那些配置文件激活的登陆用户使用,同样在nt下,它也是这样。
  win95从user.dat中取得他们的信息,winnt从ntuser.dat中取得信息。.dat文件包含了所有基于用户的注册表设置并且允许你取配置这些用户的环境。如果你改变了缺省用户的设置,所有新用户会继承同样的设置。而且,那些已经被建立的用户变的失效。
  hkey_users\.default
  这个键的设置被用于所有新用户,用户们的配置文件从这个配置文件中建立。它包括所有的环境,屏幕,声音,和其他用户相关的功能。
  hkey_users\.default\appevents
  这个键列出了事件响应,描述,和各种系统功能的声音
  hkey_users\.default\appevents\schemes
  缺省和当前的声音方案在这个键和它的子键中列出。在事件的时间中系统播发这些声音
  hkey_users\.default\console
  这个键保存了ms-dos窗口的选项、布局、荧屏颜色和字体设置。
  hkey_users\.default\control panel
  所有在控制面板里配置设置的信息全保存在这个键和它的子键中
  hkey_users\.default\control panel\accessibility
  这个键保存了所有在控制面板中辅助功能的设置。
  hkey_users\.default\control panel\appearance
  这个键保存了所有在控制面板里显示外观的设置
  hkey_users\.default\control panel\appearance\schemes
  这个键列出了缺省可用的方案,和每个方案包括的颜色和字体。
  hkey_users\.default\control panel\colors
  这个键保存了windows每个缺省颜色的设置。每个值(颜色名)像一个rgb(红、绿、蓝)值列出来。比如说,黑色是0 0 0,意思就是红色值是0,绿色值是0,蓝色值也是0。相反的白色就是255 255 255。其他的颜色都是rgb值合成的。
  hkey_users\.default\control panel\sound
  这个键决定了在错误时系统是否发出响声
  hkey_users\.default\environment
  这个键保存了环境设置,特定的临时性文件的位置
  hkey_users\.default\keyboard layout
  键盘布局设置被设置成标准美国英国标准传统键盘布局。如果你选择了其他的布局,那么数字列表会不同
  hkey_users\.default\software
  软件的安装设置被保存在这个键中,缺省用户只有微软程序的设置
  hkey_users\.default\software\microsoft
  微软的应用程序的相关设置被放在这个键里。如果其他微软程序被安装,它们就更新这个用户的微软键。在下面的项目显示了缺省的控制
  hkey_users\.default\software\microsoft\windows
  这个键保存了只和windows有联系,和windows nt没关系的设置,这些设置在win95中是相同的,使用同样的驱动和功能
  hkey_users\.default\software\microsoft\windows nt
  基于nt 功能的设置在这个键中。windows nt没有这些设置就不能够运行,它建立环境和网络上的进程,用户权限,打印机,字体等等
  hkey_users\.default\software\microsoft\windows nt\currentversion\winlogon
  这个设置控制了windows nt的登陆功能
  hkey_users\.default\unicode program groups
  缺省unicode程序组只是在使用程序管理器时被使用,explorer并不使用它们
  s-1-5-21-1658001358-1336221227-1912232085-500 (sid)
  hkey_users\s-1-5-21-1658001358-1336221227-1912232085-500
  这个是目前登陆用户的sid,每一个网络上的用户都被域用户管理器分配了一个sid,每一个sid都是唯一的,所以它依赖与登陆用户,这个信息改变。它是从用户配置文件的ntuser.dat文件调出的。一般来说,它的子键很多,是基与安装的软件的,选择的和最终设置
  hkey_users\sid\network
  这个键显示了所有连接到其他系统的映射。举例来说,如果你映射驱动器h: 到\server1\docs,它会作为一个子键显示出来
  hkey_users\sid\printers
  这个键显示了所有安装的,共享的和连接的打印机
  hkey_users\sid\software
  这个键为单独的用户扩展,基于为用户或者被用户安装的其他软件。
  hkey_users保存了所有目前登陆用户和缺省用户的设置。登陆用户的改变就如同不同用户使用这个系统,sid是用户信息的表现。使用程序重新找到任何用户的ntuser.dat文件并且把他放如到注册表中观看和编辑。
  hkey_current_user
  hkey_current_user包含着在hkey_users安全辨别里列出的同样信息。任何在hkey_current_user里的改动也都会立即hkey_users改动。相反也是这样。
  hkey_current_user允许程序员和开发者易于存取目前登陆用户的设置。通过建立这个键,微软很容易在不涉及到用户的sid下改变,添加和设置。
  也就是说,所有当前的操作改变只是针对当前用户而改变,并不影响其他用户。
  首先出场的是win98/me,因为win98和winme没有大的区别,所以这里放在一起讲述。在win98/me里面的注册表编辑器只有一种,就是最"原始"的那一种。之所以说他原始是因为他没有任何安全限制,也就是说它的注册表编辑器可以被任意一个用户打开,并没有任何权限限制。这主要是因为win98/me的使用对象是一般的单机用户,不需要限制权限,这一点和nt/2000/xp有很大的不同。打开的方法:
  1.最简单的方法:开始--运行中输入regedit就可以了。
  2.另外一种方法:在windows目录下找到regedit.exe,直接双击也可以打开。 随后是win2000/xp出场。因为2000/xp在设计时加上了权限这一概念,所以在这2个系统里面有2种方法可以打开注册表编辑器。一种是直接在开始--运行中输入regedit,出现的界面和98/me一样。这里就不详细说明了。另外一种打开方式是本文的重点内容----有权限限制的注册表编辑器(打开方法:开始----运行中输入regedt32)。如图所示(这里是winxp的截图,win2000下的截图和winxp是一样的)。
  当你选中一个键值的时候,编辑下拉菜单下就可以看到一个选项----权限,用鼠标单击这个选项以后会出现图2的窗口。用鼠标分别单击各个用户组就可以看到不同的权限限制,如果你觉得某一个用户组的权利太高了,就可以在下方修改权限(注意:必须赋予administrators组用户完全权限,否则一旦你或相应的软件、驱动程序要修改注册表,但是由于所有的组用户都没有权限修改,所以你将不能够成功安装。所以必须把完全权限赋予administrators组用户(系统默认)。图3是administrators组用户所拥有的权限。
注册表的损坏和解决方法
  注册表可能出现的问题。
  如果注册表受到严重的损害,存取硬件和软件可能会受到很大的限制,甚至系统不能启动。可能因为一个很小的问题,一个应用程序将不能正常的运行,或者运行的不稳定。
  当注册表在运行时是受保护的,所以它不可能被复制,删除,或者改变内容,除非经过一个“验证过的”程序(比如安装程序,注册表编辑工具,和域用户管理器改变安全策略和浏览器等)。由于这些保护,注册表是十分安全的,但是并不是完全能防止的。问题仍会发生,你需要作好认识它们的准备来应付这些问题。
  1、应用程序和驱动被添加到系统中
  1)在注册表中找出大半的错误与添加和删除程序有关。多数用户自己添加或者更新驱动,应用程序等等。而且添加和删除都是多次的。
  2)程序本身也有问题。没有任何应用程序没有bug或者错误。最好的情况,就是错误微乎其微,复杂深奥的问题你可能从来没见过。在设计程序时因为受时间和经费的限制,这些错误被放置不管。作为一个程序员来讲,在程序里有错误可能是次要的,但是它使系统崩溃那就变成一个大问题了。
  3)驱动程序不兼容。个人计算机世界的开放结构体系造成了一定的风险,因为任何类型的部件组合在一起都是可能的。但测试所有的组合并保证所有设备的兼容性却不太可能。所以当用在win95下的驱动被用在winnt时,某些问题就会产生。
  4)在应用程序安装过程中在注册表中添加了不正确的项。在安装时,多数应用程序使用叫一个叫setup.inf的文件详细说明例如需要什么磁盘,哪个目录将被建立,从哪里复制文件,使应用程序工作正常所需要建立的注册表项等等详细信息。如果在setup.inf中有一个错误,这个改变也仍然会出现,就会出现严重的问题。
  5)一个应用程序导致另一个应用程序和它缺省的文件关联出现错误。当一个应用程序被安装后,缺省文件类型被记录在注册表中。然后用户可以通过双击来启动应用程序和装载文件。很多时候,其他应用程序也会使用同样的扩展名。举例说,当一个tif图形在基于注册表里的设置被激活时,最后一次装载的程序将会变成一个执行体。有时候,彻底不相同和根本不兼容的程序会在它们自己的文档文件中使用相同的文件扩展名,启动文档的快捷方式将不会工作。在用户操作过程中,如果在文件打开方式选择了不正确的程序,就会造成一定的问题。
  6)在反安装时出现的错误。当你在控制面板里的添加/删除程序种删除程序时,通过应用程序自身的反安装特征,或者通过第三方软件,这可能会对注册表造成损坏。除此之外,删除程序,辅助文件,数据文件和反安装程序可能会试图移去注册表的参数项。因为系统不可能知道一个应用程序在注册表中所要存取的相关参数项,这将会不经意的移除掉其他应用程序的参数项。
  7)字体的错误。当注册表中字体id出错,你将在应用程序中看到一种不同的字体。这就让人感觉很讨厌并可能需要你移去部分或全部字体并取代它们。这经常发生在用户频繁安装和删除字体的时候。
  2、硬件设置改变或者硬件失败
  1)如果计算机系统自身有问题,注册表会有损害。通常的,这些错误可以在正确的系统维护和管理下避免。
  2)病毒问题。病毒很隐秘的改变正常的文件和注册表中的部分内容来影响我们的系统。
  3)计算机用电如果不正常也会影响计算机系统,用ups可以避免。
  4)磁盘问题。很多时候你会因为容量不够使硬件失败而换掉你的硬盘。如果整块硬盘失败,当然,你将不得不从备份中恢复你的注册表。其他的则是磁盘独立扇区或者簇的故障。虽然这些情况在今天的系统不可能发生,但是磁盘表面介质的故障会使得磁盘部分不可读,包括那些注册表文件位置。
  3、用户改动了注册表
  1)手工改变注册表。当人们手工编辑注册表,由于数据的复杂性和难懂性使得他们难免容易犯错误,而且这个错误可能很严重导致系统工作发生中断。
  2)拷贝其他注册表是很多用户犯的一个严重错误。因为从其他机器上拷贝来的注册表文件并不意味着也会在这一个机器上工作正常。对单独的系统来说注册表都是特殊的。甚至计算机硬件设备相同,拷贝来的注册表在另一个系统上不见得就会工作。如果使用另一个系统的注册表,多数硬件设备将不会工作,用户和安全问题可能造成数据和应用程序信息无法使用。 
  保护windows注册表
  保护注册表是很重要的,有很多不同的工具可以实现这一目的。当没有安全设置时,用户可能的错误会更多。幸运的是,他们可以有几中方法来保护windows注册表,在注册表失败时他们可以用额外的拷贝来恢复注册表。下面就是其中的一些方法:
  1、使用windows备份软件
  注:win95和win98备份程序有部分区别,在这里只讲win98的备份程序。
  win98中包括一个备份程序。当安装win98时如果你选择“自定义安装”,或者你可以在控制面板中的添加/删除程序里安装它。当你安装了这个备份程序,从 开始菜单| 程序| 附件 |系统工具 |备份 可以运行它。启动时,这个程序提示你是否新建一个新备份,打开现有的备份作业,或者是还原备份文件 。
  如果选择新建备份,则会有一个备份向导提示你如何去做备份。
  如果选择取消向导,那么可以自己手工设置要备份的内容。在备份内容里可以备份网络和本地驱动器的文件。可以在你想备份磁盘或者文件的选择框打上对号来做备份工作。然后在备份在何处里填上你做备份的目的位置既可。如果要连同windows注册表一起备份,那么在 作业|选项|高级 里,在“备份windows注册表”选择框打对号就可以了。恢复则是备份的逆过程,这里就不详述了。
  2、在安全模式下复制注册表文件
  当win95运行时,注册表文件被锁定,只能用注册表编辑器或者系统自己来进行存取,这些文件不能够被复制到其他地方。如果你在安全模式下启动win95,注册表就不会使用同样的方法载入,这样system.dat 和 user.dat就可以被复制。实际上安全模式下系统文件是受保护的。
  在启动时,当计算机显示starting windows 95...时按f8键进入安全模式。改变system.dat 和 user.dat的隐藏和只读属性这样就可以看到和复制它们。当拷贝完注册表文件,不要忘记了改回它们只读和隐藏属性。
  3、使用微软配置备份来备份你的注册表文件
  cfgback.exe是win95(win98中没有这个软件)所附带的备份软件。它在win95cd-rom上的\other\misc\cfgback这个目录。在系统上拷贝所有的文件到任何一个目录,然后在桌面上建立一个cfgback.exe的快捷方式。
  要做一个注册表的备份,启动cfgback然后在选择的备份名位置输入一个名字然后点备份继续。
  注意:在使用cfgback前确定你已经关掉了所有运行的程序。如果有程序在运行,cfgback可能将使得系统崩溃,数据丢失,而且保存的是一个不完整的备份。
  4、导出注册表
  在我看来,如果你没有磁带机或者其他东西。在regedit.exe中导出选项有一个导出为文本文件。通常使用一个压缩工具,导出工具选项也可以被用做保存和保护注册表的方法。
  要导出在注册表中的任意键,选中这个键然后选择 注册|导出注册表文件。这将会复制这个键,并提示你在那里存放这个键及它的名字,然后用一个扩展名为.reg的文件保存这些数据。
  当我们用文本格式导出注册表。我们可以使用象pkzip或者其他压缩工具压缩它(可以在正常dos模式运行的)来节省空间。
  为了备份我们可以在windows目录下建立一个用来做备份的文件夹。最少在一个月我们应该进行定期的备份。因为许多计算机用户订阅或购买带有赠送cd的计算机杂志。这些cd上有大量的时间限制的共享软件。许多用户从其中安装一个或者多个程序。当软件过期时它们反安装这些程序,但是这些程序在注册表中留下了一些痕迹。频繁的添加/删除程序会影响注册表,但是有了备份相对来说我们就比较安全了。
  我们必须重新启动计算机到dos模式下来导入,假定你导出你的注册表为mar99.reg.现在在命令提示下打
  regedit /c mar99.reg
  注册表编辑器将mar99.reg中的数据导入你的注册表并保存。不过只在命令提示下这个全部导入的工作才比较可靠。
  技巧:如果你的注册表不断的变的庞大,那么先导出它然后象上面那样再逐个导入它。在这个导入导出过程中注册表中不必要的项将被清除出去。如果你使用win98那么你可以使用scanreg.exe程序。在windows目录命令提示下打 scanreg /fix来执行命令。
  请记住,预防要比修复好的多。注册表太容易被改变了,在发生突然事件时有几个注册表的备份是解决问题最好的方法。
  从注册表故障中恢复
  这里有四种不同级别的方法可以从windows注册表故障中恢复
  restart
  redetect
  restore
  reinstall
  让我们来看每一个方法来断定来使用它最适合的时间,并且解决何种类型的问题。
  restart(重新启动)
  win95注册表大部分内容保存在ram中。如果哪个信息受损,它就必须重新读取正确的信息。当你重新启动系统,注册表将数据从硬盘读到ram中就可以使用了。
  拿字体id问题来说。每种字体在系统中用一个id号来使用。当一个字体被用在一个文档时,这个字体被这个数字保存并且用一个名字来标识。当字体id损坏那么字体显示和打印将被其他字体取代。重新启动系统从硬盘上刷新数据,将产生修复过的字体id,这样字体显示和打印就变的正常了。
  这也就是为什么windows系统故障经常在重新启动后就又恢复正常的一个原因。
  redetect the devices(重新检测硬件)
  如果一个设备工作不正常,那么在注册表中控制设备的设置可能受损了。为了重新设置注册表,你应该删除并且重装设备的驱动,或者你应该让win95重新检测它们。很多时候,当一个设备工作不正常,它们会在设备管理器上此设备前使用一个惊叹号标志显示出来。很明显,如果设备从来不工作,可能就是其他问题了。但是如果设备以前工作,现在出问题,注册表就需要被恢复。
  要检测一个设备,在控制面板上选择添加新硬件。第一个问题是文你“需要windows搜索新硬件吗?”如果你选择是,win95将做一个彻底的搜索去找“新”设备。任何设置不正确的或者没找到驱动的设备将被检测到并显示出来。
  restore(恢复)
  从cfgback中恢复注册表
  从cfgback中恢复注册表有很多好处。如果你建立了几个备份,你可以选择正确的一个来恢复。你可以如同做手术般放置排列注册表参数项。
  导入注册表文件
  象前面章节讲述的那样,一个代替使用备份的方法就是导入一个.reg文件。.reg文件包括了目的数据位置,所以对这个文件简单的双击就可以将数据放入注册表。它是所有恢复程序中最简单的,但是也可能造成错误。错误不会是用regedit.exe把数据写入错误的位置,它很可能出现在用户直接双击注册表文件的时候。
  reinstall(重新安装)
  重新安装
  最后的方法就是重新安装驱动、应用程序或者win95。一般来说,它只花费你一个小时左右时间去做这些事。如果你在现有的文件上重新安装,很多配置信息还被安装在同样的地方。同样在安装驱动程序时,你应该重新加入配置数据。
  实际上找出原因并修复它所花费的时间比重新安装还要多,这就是为什么重新安装在技术支持上是一个相当普通的“解决方法”。关键的问题在于,“你是否想找出是什么错误,或者你是否只想让它工作正常?”答案取决于问这个问题的用户情况,发生问题的频繁次数和重新安装的软件的实用性。
  当windows第一次被安装时它将在启动目录的根目录上创建一个名为system.1st的文件。这是windows第一次启动时创建的个简单的system.dat文件。你所应该做的就是将这个文件放到windows目录(在dos模式下)并将它的名字改为system.dat。然后重新启动。然后你就可以得到安装时第一次启动的windows。
  因为很多.ini,.dll和其他文件的改变,这种方法的成功机率大概只超过50%。比如当装ie4.0后系统和注册表将有一个彻底的改变。我们的system.1st文件虽然包含了一个dll文件的参考,但它可能更新或者改变版本号。
  这里就是几个在注册表出故障的时候恢复它的工具和方法。你的数据可能会安全恢复,但是不管你用什么方法,除了重新格式化硬盘,最好的方法就是做好系统注册表的备份工作。
备份注册表
  两个重要的分支 :
  1.用户个人数据[hkey_current_user]
  该分支中存放的是当前登录用户的个人喜好设置、所用的软件的设置等个人数据。无论来宾、受限用户、高级用户还是管理员,都可以修改属于自己个人的注册表数据。用户个人的注册表数据就是“注册表编辑器”左侧窗格[hkey_current_user]所包含的项、子项和值项。
  2.系统的核心数据[hkey_local_machine]
  只有管理员权限的用户可以访问系统注册表数据,其中存放了系统中各项重要的核心设置数据。系统的注册表数据就是“注册表编辑器”左侧窗格显示的[hkey_local_machine]所包含的项、子项和值项。
  与备份注册表过招
  任务1:备份注册表分支并编辑部分设置
  第一步:点击“开始→运行”(或命令行提示符),输入以下命令导出两个注册表分支(驱动器、路径及文件可自定义),导出后的myreg.reg大小约为8mb~9mb,而sysreg.reg大小约为30mb~60mb,视个人情况略有不同。
  reg export hkcu c:\myreg.reg
  reg export hklm c:\sysreg.reg
  第二步:分别右击myreg.reg和sysreg.reg,选择“编辑”或“发送到→记事本”(创建右键菜单“发送到→记事本”,可将“开始”菜单中的“记事本”快捷方式复制到“c:\documents andsettings\username\sendto”文件夹),用“记事本”程序打开myreg.reg文件。
  第三步:点击菜单命令“编辑→查找”,输入要查找内容的关键字,单击“查找下一个”。查找到一个数据,可执行删除、修改操作,然后按f3键可继续查找下一个数据。查找、修改所有数据,选择菜单“文件→保存”保存注册表文件即可。
如何利用注册表防止病毒运行?
  经常在网络上冲浪,十有八九避免不了网络病毒的攻击,用专业杀毒程序清除了这些病毒程序并重新启动计算机系统后,我们有时会发现先前已经被清除干净的病毒又卷土重来了,这是怎么回事呢?
  原来目前不少流行的网络病毒一旦启动后,会自动在计算机系统的注册表启动项中遗留有修复选项,待系统重新启动后这些病毒就能恢复到修改前的状态了。为了“拒绝”网络病毒重启,我们可以从一些细节出发,来手工将注册表中的病毒遗留选项及时删除掉,以确保计算机系统不再遭受病毒的攻击。 
  阻止通过网页形式启动 
  不少计算机系统感染了网络病毒后,可能会在hkey_current_user\software\microsoft\windows\currentversion\runonce、hkey_current_user\software\microsoft\windows\currentversion\run、hkey_current_user\software\microsoft\windows\currentversion\runservices等注册表分支下面的键值中,出现有类似有.html或.htm这样的内容,事实上这类启动键值主要作用就是等计算机系统启动成功后,自动访问包含网络病毒的特定网站,如果我们不把这些启动键值及时删除掉的话,很容易会导致网络病毒重新发作。 
  为此,我们在使用杀毒程序清除了计算机系统中的病毒后,还需要及时打开系统注册表编辑窗口,并在该窗口中逐一查看上面的几个注册表分支选项,看看这些分支下面的启动键值中是否包含有.html或.htm这样的后缀,一旦发现的话我们必须选中该键值,然后依次单击“编辑”/“删除”命令,将选中的目标键值删除掉,最后按f5功能键刷新一下系统注册表就可以了。 
  当然,也有一些病毒会在上述几个注册表分支下面的启动键值中,遗留有.vbs格式的启动键值,发现这样的启动键值时我们也要一并将它们删除掉。 
  阻止通过后门进行启动  
  为了躲避用户的手工“围剿”,不少网络病毒会在系统注册表的启动项中进行一些伪装隐蔽操作,不熟悉系统的用户往往不敢随意清除这些启动键值,这样一来病毒程序就能达到重新启动目的了。
  例如,一些病毒会在上面几个注册表分支下面创建一个名为“system32”的启动键值,并将该键值的数值设置成“regedit -s d:\windows”(如图1所示);咋看上去,许多用户会认为这个启动键值是计算机系统自动产生的,而不敢随意将它删除掉,殊不知“-s”参数其实是系统注册表的后门参数,该参数作用是用来导入注册表的,同时能够在windows系统的安装目录中自动产生vbs格式的文件,通过这些文件病毒就能实现自动启动的目的了。所以,当我们在上面几个注册表分支的启动项中看到“regedit -s d:\windows”这样的带后门参数键值时,必须毫不留情地将它删除掉。
  阻止通过文件进行启动 
  除了要检查注册表启动键值外,我们还要对系统的“win.ini”文件进行一下检查,因为网络病毒也会在这个文件中自动产生一些遗留项目,如果不将该文件中的非法启动项目删除掉的话,网络病毒也会卷土重来的。 
  一般来说,“win.ini”文件常位于系统的windows安装目录中,我们可以进入到系统的资源管理器窗口,并在该窗口中找到并打开该文件,然后在文件编辑区域中检查“run=”、“load=”等选项后面是否包含一些来历不明的内容,要是发现的话,必须及时将“=”后面的内容清除干净;当然,在删除之前最好看一下具体的文件名和路径,完成删除操作后,再进入到系统的“system”文件夹窗口中将对应的病毒文件删除掉。 
  病毒经常修改的注册表键值
  1)ie起始页的修改
  hkey_current_user\software\microsoft\internet explorer\main 右半部分窗口中的start page 就是ie主页地址了
  (2)internet选项按钮灰化&失效
  hkey_current_user\software\policies\microsoft\internet explorer\control panel 下的dword值 “setting”=dword:1 “links”=dword:1 “secaddsites”dword:1 全部改为0之后 再将hkey_users\default\software\policies\microsoft\internet explorer\control panel 下的dword值“homepage”键值改为0 则无法使用“internet选项”修改ie设置
  (3)“源文件”项不可用
  hkey_current_user\software\policies\microsoft\internet explorer\restrictions 的“noviewsource”被设置为1了,改为0就可恢复正常
  (4)“运行”按钮被取消&失效
  hkey_current_user\software\microsoft\windows\current version\policies\explorer 的“norun”键值被改为1了,改为0就可恢复
  (5)“关机”按钮被取消&失效
  hkey_current_user\software\microsoft\windows\current version\policies\explorer 的“noclose”键值被改为1了,改为0就可恢复
  (6)“注销”按钮被取消&失效
  hkey_current_user\software\microsoft\windows\current version\policies\explorer 的“nologoff”键值被改为1了,改为0就可恢复
  (7)磁盘驱动器被隐藏
  hkey_current_user\software\microsoft\windows\current version\policies\explorer 的“nodrives”键值被改为1了,改为0就可恢复
  注意了上面几个细节后,许多网络病毒日后要想重新启动就不是那么容易了!