Windows 95/98中文版注册表结构
1.注册表Reigstry的层次结构
注册表Reigstry的层次结构类似于硬盘中的目录树,我们可参见图1.2。
┌——————┐
│ 注册表 │
│ Registry │
└——┬———┘
│
│ ┌————┐
├—┤ 根键 │
│ └—┬——┘
│ ┌————┐
├——┤ 子键 │
│ └—┬——┘
│ ┌————┐
├——┤ 子键 │
│ └—┬——┘
│ ┌———┐
├—┤键值项│
│ └———┘
图1.2
表1.1是对图1.2中的Registry层次结构的解释。
表1.1 图1.2中的Registry层次结构的解释
层次
说 明
根键
根键类似于硬盘上的根目录。 Registry有四个预定义的根键:
1.HKEY_LOCAL_MACHINE
2.HKEY_USERS
3.HKEY_CURRENT_USER
4.HKEY_CLASSES_ROOT
键与子键
键和子键类似于文件管理器中看到的目录结构,在键下面是子键,就象目录可以包含子目录一样
键值项
键值项类似硬盘上树型目录的末端文件,键和子键可以包括一个或多个键值项。键值项由键值名、数据类型和键值三部分组成,其格式为:“键值名:数据类型:键值”。
键值类型
Registry中有如下三种键值类型:
DWORD值:只允许一个键值,并且必须为1-8个16进制数据(即双字)。
字符串值:只允许一个键值,并且作为要存储的字符串来解释。
二进制值:只允许一个值,是16进制数字串,每对作为一个字节值解释。
2.Registry与INI文件之间的关系
Registry与Windows 98中的INI文件有许多相似之处。键或子键类似于INI文件中的小节,一个键值项对应于INI文件中小节里的一条设置项。然而,Registry可以包括子键,而INI文件不支持小节的嵌套。
Registry中的键值项还可以包含可执行代码,而在INI文件中设置项只是简单的字串。
在同一台计算机上有多个用户,Registry可以存储每个用户的特性,而INI文件中却不可能。
如果您在Windows 3.x上升级为Windows 98,则安装程序会从System.ini和Win.ini文件文件中选择一些延续信息放入到注册表中。不过,为了与以前的Windows版本上的老式16位应用程序保持兼容,INI文件中的有些设置项不能迁移到Windows 98的注册表中。有关Win.ini、System.ini文件的结构与设置项信息详见附录A。
1.注册表中Win.ini信息
表1.2列出了Windows 98在升级安装过程中,从Win.ini文件中移出的部分设置项,以及在注册表中的位置。所有的子键都处于注册表的HKEY_CURRENT_USER根键中。
表1.2 注册表中Win.ini信息
小节
设置项
HKEY_CURRENT_USER中的子键分支
[desktop]
GridGranularity
Control Panel\desktop
Pattern
Control Panel\desktop
TileWallPaper
Control Panel\desktop
[windows]
ScreenSaveActive
Control Panel\desktop
ScreenSaveTimeOut
Control Panel\desktop
[Sounds]
Sound Event Name
AppEvents\Schemes\Apps\.Default\Sound Event Name\.current
[Hearts]
Name
Software\Microsoft\Windows\CurrentVersion\Applets\Hearts
2.注册表中的System.ini信息
表1.3列出了Windows 98在升级安装过程中从System.ini文件中移出的设置项,以及在注册表中的位置,这些子键都处于注册表的HKEY_LOCAL_MACHINE根键中。根据机器的网络配置,有些系统可能不会出现某些子键。
表1.3 注册表中的System.ini信息
小节
设置项
HKEY_LOCAL_MACHINE内的子键分支
[Network]
Comment
System\CurrentControlSet\Services\VxD\VNETUP
ComputerName
System\CurrentControlSet\Control\ComputerName\ComputerName
EnableSharing
没有子键入口
LMAnnounce
System\CurrentControlSet\Services\VxD\VNETUP
LogonDomain
没有子键入口
Logon Validated
没有子键入口
MaintainServerList
System\CurrentControlSet\Control\ComputerName\ComputerName
Reconnect
Reshare
没有子键入口
没有子键入口
Username
Network\Logon
Workgroup
System\CurrentControlSet\Control\ComputerName\ComputerName
[386Enh]
Network
没有子键入口
Transport
Software\Microsoft\Windows\CurrentVersion\Network\Real Mode Net
1.2 注册表Registry的组成
我们知道,在Windows 3.x中,提供了一个注册数据库Reg.dat,它是一个一般二进制文件,它可用Regedit.exe程序来维护。Reg.dat是一个十分软弱的数据文件,在Windows 3.x中增加或删除O LE应用程序时,经常受到不同程度的破坏。
Windows 98改变了Windows 3.x的做法,采用了一种强大的注册表Registry,它要比Reg.dat更为可靠。
3.注册表的文件组成
注册表Registry由五个文件组成的。介绍如下。
1.系统配置注册表文件System.dat
在Windows 98的系统目录中有一个隐含、系统、只读文件System.dat,它是Windows 98注册表的一部分,该文件具有如下作用:
● 描述单一的PC配置。
● 描述安装在一单独的PC上的消息。
● 安装即插即用类型的设备硬件配置,如设备的I/O地址、IRQ级和DM A通道等。
该文件的作用有点类似Windows 3.x中的System.ini文件。
该文件在Windows 98的网络运行状态时,保存在本地的工作站或本地PC机中。
在Windows 98安装期间,Setup将检查您的计算机上已安装的硬件,然后在System.dat中建立适当的配置项。若从现有的Windows 3.x中安装Windows 98,则Setup将把现有的System.ini、Reg.dat文件中的部分设置项拷贝到System.dat中,详见1.1.3节。
在您使用“控制面板”的“系统”图标查看硬件配置时,其窗口中所显示的选项都是从System.dat中读取的,如图1.3所示。
图1.3
2.系统配置注册表备份文件System.da0
Windows 98的注册表的一个主要特点就是可靠性强,不易损坏。这个特点靠的就是注册表有备份文件。
系统配置注册表System.dat的备份文件为System.da0,该文件在System.dat文件遭到意外破坏时,将由系统自动拷贝为System.dat。
3.用户平台配置注册表文件User.dat
在Windows 98的系统目录中有一个隐含、系统、只读文件User.dat,它也是Windows 98的注册表的一部分,该文件具有如下作用:
● 它定义用户优先权,如用户平台配置等。
● 特定于某一个用户的应用程序的安装信息。
该文件的作为类似于Windows 3.xWin.ini文件。
当您在Windows 98中使用网络时,User.dat必须放在网络服务器上。
在您第一次输入用户标识和密码时,安装程序将把这些信息存储在User.dat中。您的Windows 98的系列号也存储在USER.DAT中。
如果用户在“控制面板”的“密码”图标中选择了“用户可自定义首选项及桌面设置登录时,Windows自动启用个人设置”这个选项后(参见图1.4所示),系统就会为每个用户创建他自己的User.Dat,并且把它保存为C:\Windows\Profiles\用户名\User.dat。用户每次登录后,他自给的User.dat会被调入到系统中。
图1.4
4.用户平台配置注册表备份文件User.da0
用户平台配置注册表文件User.dat也有一个备份文件User.da0。当User.dat遭到意外破坏时,将由系统将User.da0拷贝为User.dat,从而使User.dat得到了恢复。
5.网络管理注册表文件Config.pol
若您在Windows 98安装了“系统策略编辑器”后,则用户可以使用Config.pol文件中的限制来决定系统如修改注册表,也就是说,系统根据Config.pol中的设置对网络用户的操作作一些限制,这种限制在Windows 98被称为“策略”。Config.pol文件也是一个隐含、系统、只读文件,它主要用于Windows 98的网络用户的管理方面的策略。
6.网络管理注册表备份文件Config.po0
同System.dat、User.dat有备份文件一样,Config.pol也有一个备份文件Config.po0,它是一个隐含、系统、只读文件。它存放在网络服务器中。
1.2.2 注册表中的根键
使用注册表编辑器可以观察注册表中的根键,如图1.5所示。
图1.5
注意:在“运行”对话框中输入RegEdit,然后单击“确定”按钮,则可以运行注册表编辑器,详见第2章介绍。
图1.5显示了Windows 98中文版的注册表Registry(System.dat、User.dat、Config.pol)的数据组织结构。
图1.5左窗格显示的是注册表的根键,这样的根键共六个。这些根键都是大写的,并以HKEY_为前缀,这种命令约定是以Win32 API的Registry函数的关键字的符号变量为基础的。
虽然在注册表中,六个根键看上去处于一种并列的地位,彼此毫无关系。但事实上,HKEY_CLASSES_ROOT和HKEY_CURRENT_CONFIG中存放的信息都是HKEY_LOCAL_MACHINE中存放的信息的一部分,而HKEY_CURRENT_USER中存放的信息只是HKEY_USERS存放的信息的一部分。
HKEY_LOCAL_MACHINE包括HKEY_CLASSES_ROOT和HKEY_CURRENT_USER中所有的信息。在每次系统启动后,系统就映射出HKEY_CURRENT_USER中的信息,使得用户可以查看和编辑其中的信息。
实际上,HKEY_LOCAL_MACHINE\SOFTWARE\Classes就是HKEY_CLASSES_ROOT,为了用户便于查看和编辑,系统专门把它作为一个根键。同理,HKEY_CURRENT_CONFIG\SYSTEM\Current Control就是HKEY_LOCAL_MACHINE\SYSTEM\Current Control。
HKEY_USERS中保存了默认用户和当前登录用户的用户信息。HKEY_CURRENT_USER中保存了当前登录用户的用户信息。
HKEY_DYN_DATA保存了系统运行时的动态数据,它反映出系统的当前状态,在每次运行时都是不一样的,即便是在同一台机器上。
根据上面的分析,注册表中的信息可以分为HKEY_LOCAL_MACHINE和HKEY_USERS两大类,这两大类的详细介绍参见第3章。
1.2.3 注册表中的键与子键
在注册表中(参见图1.5所示),所有的数据都是通过一种树状结构以键和子键的方式组织起来,十分类似于目录结构。每个键都包含了一组特定的信息,每个键的键名都是 和它所的信息相关的。如果这个键包含子键,则在注册表编辑器窗口中代表这个键的文件夹的左边将有“+”符号,以表示在这个文件夹中有更多的内容。如果这个文件夹被用户打开了,那么这个“+”就会变成“-”,如图1.6所示。
图1.6
1.HKEY_USERS
该根键保存了存放在本地计算机口令列表中的用户标识和密码列表。每个用户的预配置信息都存储在HKEY_USERS根键中。HKEY_USERS是远程计算机中访问的根键之一。图1.7为HKEY_USER子关键字连接情况。
图1.7
2.HKEY_CURRENT_USER
该根键包含本地工作站中存放的当前登录的用户信息,包括用户登录用户名和暂存的密码(注:此密码在输入时是隐藏的)。用户登录Windows 98时,其信息从HKEY_USERS中相应的项拷贝到HKEY_CURRENT_USER中。图1.8为HKEY_CURRENT_USER根键下各个键之间连接的情况。
图1.8
3.HKEY_CURRENT_CONFIG
该根键存放着定义当前用户桌面配置(如显示器等)的数据,以及最后使用的文档列表(MRU),和其他有关当前用户的Windows 98中文版的安装的信息.
图1.9为HKEY_CURRENT_CONFIG子关键字之间的连接情况。
图1.9
4.HKEY_CLASSES_ROOT
根据在Windows 98中文版中安装的应用程序的扩展名,该根键指明其文件类型的名称。
在第一次安装Windows 98中文版时,RTF(Rich Text Format)文件与写字板(WordPad)联系起来,但在以后安装了中文Word 6.0后,双击一个RTF文件时,将自动激活Word。存放在SYSTEM.DAT中的HKEY_CLASSES_ROOT,将替代WIN.INI文件中的[Extensions]小节中的设置项,它把应用程序与文件扩展名联系起来,它也替代了Windows 3.x中的Reg.dat文件中的相似的设置项。图1.10显示了HKEY_CLASSES_ROOT根键中包括的文件扩展名的情况。
图1.10
5.HKEY_LOCAL_MACHINE
该根键存放本地计算机硬件数据,此根键下的子关键字包括在SYSTEM.DAT中,用来提供HKEY_LOCAL_MACHINE所需的信息,或者在远程计算机中可访问的一组键中。
该根键中的许多子键与System.ini文件中设置项类似。
图1.11显示了HKEY_LOCAL_MACHINE根键下的各个子键之间的情况。
图1.11
6.HKEY_DYN_DATA
该根键存放了系统在运行时动态数据,此数据在每次显示时都是变化的,因此,此根键下的信息没有放在注册表中。图1.12显示了HKEY_DYN_DATA根键下的各个子键的情况。
图1.12
1.2.4 注册表中的键值项数据
注册表通过键和子键来管理各种信息。但是,注册表中的所有信息是以各种形式的键值项数据保存下来。在注册表编辑器右窗格中,保存的都是键值项数据。这些键值项数据可分为如下三种类型:
1.字符串值
在注册表中,字符串值一般用来表示文件的描述、硬件的标识等。通常它由字母和数字组成,最大长度不能超过255个字符。在图1.13所示中,“D:\pwin98\trident”即为键值名“a”的键值,它是一种字符串值类型的。同样地,“ba”也为键值名“MRUList”的键值。通过键值名、键值就可以组成一种键值项数据,这就相当于Win.ini、Ssytem.ini文件中小节下的设置行。其实,使用注册表编辑器将这些键值项数据导出后,其形式与INI文件中的设置行完全相同了。详见第3章。
图1.13
2.二进制值
在注册表中,二进制值是没有长度限制的,可以是任意个字节长。在注册表编辑器中,二进制以十六进制的方式显示出来,如图1.14所示。
图1.14
在图1.14中,键值名Wizard的键值“80 00 00 00”就是一个二进制
注意:在如图1.15所示的“编辑二进制值”对话框时,在编辑框的左边输入十六进制数时,其右边将会显示相应的ASCII码。
图1.15
3.DWORD值
DWORD值是一个32位(4个字节,即双字)长度的数值。在注册表编辑器中,您将
图1.16
发现系统会以十六进制的方式显示DWORD值,如图1.16所示。
注意:在编辑DWORD数值时,可以选择用十进制还是16进制的方式进行输入,如图1.17所示。
图1.17
1.3 注册表的双重入口
在注册表中经常出现双重入口(分支),例如,有一些在HKEY_CLASSES_ROOT中的键同样会在HKEY_LOCAL_MACHINE中出现,如图1.18所示。
图1.18
如果这些相同的分支出现在两个不同的根键中,那么,哪个根键有效呢?
注册表的子键都有严格的组织。如果相同的信息出现在超过一个的子键中,如果您只修改了一个子键,那么该修改是否作用于系统依赖于该子键的等级。一般来说,系统信息优先于用户等级。例如,一个设置项同时出现在HKEY_LOCAL_MACHINE和HKEY_USER子键中,通常由HKEY_LOCAL_MACHINE中的数据起作用。要注意的是,这种情况只发生在您直接编辑注册表时。如果您从“控制面板”中更改系统配置,则所有出现该设置项的地方均会发生相应的改变。
例如,您可以通过注册表设置文件关联,即将一个带有特殊后缀的文件连接到一个应用程序上。在注册表中,有四个子键都保存了文件管理的数据,它们分别是:HKEY_CLASSES_ROOT、HKEY_CURRENT_USER、HKEY_LOCAL_MACHINE、HKEY_USER。在缺省情况下,所有后缀为1ST的文件都被连接到记事本程序(Notepad)上。如果您在Windows资源管理器双击该后缀的文件,则系统将激活记事本,同时将此文件调入编辑。但是您也可此文件关联从Notepad改为Lotus Ami Pro(这也是一个字处理程序),则您在双击后缀为1ST的文件时,将激活Lotus Ami Pro程序,同时编辑此文件。但是,如果您在直接编辑注册表时只修改一个子键,则会出现如下四种情况:
● 如果只修改HKEY_CLASSES_ROOT中的1ST项,则在双击1ST后缀的文件时将激活Lotus Ami Pro。
● 如果只修改HKEY_CURRENT_USER中的1ST项,则在双击1ST后缀的文件时将激活Notepad。
● 如果只修改HKEY_LOCAL_MACHINE中的1ST项,则在双击1ST后缀的文件时将激活Lotus Ami Pro。
● 如果只修改HKEY_USER中的1ST项,则在双击1ST后缀的文件时将激活Notepad。
在上面的例子中,HKEY_CLASSES_ROOT子键和HKEY_LOCAL_MACHINE子键看起来在控制文件关联上相互独立,这似乎有些自相矛盾,但是,要知道HKEY_CLASSES_ROOT根键就是HKEY_LOCAL_MACHINE\Software\Classes,因此,在改变HKEY_CLASSES_ROOT根键就是改变HKEY_LOCAL_MACHINE。
注册表通过注册表编辑器修改注册表。
可以用windows自带的两个编辑器,regedit (位置在windows系统目录下)和regedt32(32位注册表编辑程序)
也可以通过第三方注册表修改软件。也可以自己写reg文件导入。
至于具体怎么修改,建议看相关专门教程。不是在这里一两句话能说清楚的,注册表是windows的命根,里面储存着大量的系统信息,换句话说就是一个庞大的数据库。
开始 运行, 输入regedit 打开注册表编辑器,不过修改嘛?》你还是看看教材吧,改错了就完了
你连怎么打开注册表都不知道,还想修改注册表????
注册表能随便修改吗?
点“开始”---“运行”---输入“regedit”就可以打开注册表
劝你不要乱来,改注册表不是改作文。
"开始”---“运行”---输入“regedit”就可以打开注册表