注册表(学习)

来源:互联网 发布:淘宝店铺店招全屏 编辑:程序博客网 时间:2024/06/06 18:24

注册表(学习)

1.  什么是注册表?

注册表是 Windows 中的数据库,它包含有关计算机上的系统硬件、安装的程序和设置以及每个用户帐户的配置文件的重要信息。Windows 会频繁地参考注册表中的信息。

不需要对注册表进行手动更改, 因为通常情况下程序和应用程序会自动进行所有必要的更改。对计算机的注册表更改不正确可能会使您的计算机无法操作。但是,如果损坏的文件出现在注册表中,则可能需要您进行更改。

我们强烈建议您在进行任何更改之前备份注册表,并且只能更改注册表中您理解的值或者由您信任的提供者指导进行更改。

2.  数据结构

注册表由键(或称)、子键(子项)和值项构成。一个键就是分支中的一个文件夹,而子键就是这个文件夹中的子文件夹,子键同样是一个键。一个值项则是一个键的当前定义,由名称、数据类型以及分配的值组成。一个键可以有一个或多个值,每个值的名称各不相同,如果一个值的名称为空,则该值为该键的默认值。

在注册表编辑器(Regedit.exe)中,数据结构显示如下,其中,command键是open键的子键,(默认)表示该值是默认值,值名称为空,其数据类型为REG_SZ,数据值为%systemroot%\system32\NOTEPAD.EXE "%1

                          Regedit-txtfile.png

以上信息的意义是:txt类型的文档在右键菜单里的“打开”一项使用的程序是“NOTEPAD.EXE”,即用记事本打开文档。

1     数据类型

注册表的数据类型主要有以下五种:

显示类型(在编辑器中)

数据                                      类型

说明

REG_SZ

字符串

文本字符串

REG_BINARY

二进制数

二进制值,以十六进制显示。

REG_DWORD

双字

一个32位的二进制值,显示为8位的十六进制值。

REG_MULTI_SZ

多字符串

含有多个文本值的字符串

REG_EXPAND_SZ

可扩充字符串

此外,注册表还有其他的数据类型,但是均不常用:

·        REG_DWORD_BIG_ENDIAN

·        REG_DWORD_LITTLE_ENDIAN

·        REG_FULL_RESOURCE_DESCRIPTOR

·        REG_QWORD

·        REG_FILE_NAME

2     注册表的分支

注册表有五个分支,下面是这五个分支的名称及作用:

名称

作用

HKEY_CLASSES_ROOT

存储Windows可识别的文档类型的详细列表,以及相关联的程序。

HKEY_CURRENT_USER

存储当前用户设置的信息。

HKEY_LOCAL_MACHINE

包括安装在计算机上的硬件和软件的信息。

HKEY_USERS

包含使用计算机的用户的信息。

HKEY_CURRENT_CONFIG

这个分支包含计算机当前的硬件配置信息。

3     注册表的存储方式

注册表的存储位置随着Windows的版本变化而不同。尤其是Windows NT家族操作系统和Windows 95家族的存储方式有很大区别。注册表被分成多个文档存储,每一个文档被称为一个配置单元。

在早期的Windows3.x系列中,注册表仅包含一个reg.dat文档,所存放的内容后来演变为HKEY_CLASSES_ROOT分支。

Windows NT家族的配置单元文档:

名称

注册表分支

作用

SYSTEM

HKEY_LOCAL_MACHINE\SYSTEM

存储计算机硬件和系统的信息

NTUSER.DAT

HKEY_CURRENT_USER

存储用户参数选择的信息(此文档放置于用户个人目录,和其他注册表文档是分开的)

SAM

HKEY_LOCAL_MACHINE\SAM

用户及密码的数据库

SECURITY

HKEY_LOCAL_MACHINE\SECURITY

安全性设置信息

SOFTWARE

HKEY_LOCAL_MACHINE\SOFTWARE

安装的软件信息

DEFAULT

HKEY_USERS\DEFAULT

缺省启动用户的信息

USERDIFF

HKEY_USERS

管理员对用户强行进行的设置

  • 假设Windows安装于C盘,则在Windows XP以前,文档存放于C:\WINNT\SYSTEM32\CONFIG,而XP及以后则存放于C:\WINDOWS\SYSTEM32\CONFIG

3.  编辑注册表

1     使用注册表编辑器

Microsoft公司不建议用户自行更改注册表,因为如果对注册表进行了不当修改,就有可能造成Windows系统的某些功能失效,甚至导致系统崩溃。但是,Microsoft公司仍然在Windows中提供了注册表编辑器,它位于%systemroot%\regedit.exe。

除了编辑本台计算机上注册表数据之外,注册表编辑器亦可以通过文档菜单下的“加载配置单元”菜单项编辑直接编辑文件系统上的注册表数据文档。该功能可以允许用户打开文件系统中的RegHive文档,并将其中的数据映射到HKEY_USERS或者HKEY_LOCAL_MACHINE项下的一个子项之中。

2     使用脚本

在Windows 98以后的操作系统中,增加了一个脚本语言解释器,可以用来执行一些系统任务。它可以支持VBScript和JavaScript两种脚本语言,都提供了访问注册表的功能。某些病毒就利用这一点通过修改注册表进行传播。

3     使用第三方或自行编写的软件

访问注册表的系统功能对编程人员是开放的,因此有许多软件都有读写注册表的功能。事实上,Windows平台下开发的软件几乎都在不同程度上修改注册表,以便保存一些在程序多次运行之间需要保留的信息,以及让软件可以通过某种特定方式(例如,右键菜单)启动。也有一些软件是专门开发出来对注册表进行优化和设置的。

4     使用reg文档

reg文档也是一种修改注册表的方式。在注册表编辑器中,用户可以通过“文档”菜单中的“导出”菜单项来备份注册表中的某些项目到一个reg文档之中;之后用户可以再次通过“导入”菜单项将这些项目还原。reg文档本身也在系统中被关联到regedit.exe,因此直接双击打开reg文档也会起到将其中的项目导入到注册表中的效果。

而事实上,reg文档是根据一定格式编写的纯文本文件。因此,熟练的用户可以直接使用文本编辑器(比如记事本)来创建自己的reg文档,这样做无需在注册表中根据路径一级一级地访问,而且可以直接对大量项目进行批量修改。这些文档还可以被分发给非专业的用户,帮助他们快速地完成注册表的编辑,以减少出错的可能。

4.  备份注册表(还原类似)

必须以管理员身份登录才能执行这些步骤。 如果不是以管理员身份登录,则您仅能更改适用于您的用户帐户的设置。

对注册表项或子项更改之前,我们建议您导出该项或子项或者制作它的备份副本。您可以将备份副本保存到指定的位置,如硬盘上的文件夹或可移动存储设备。如果您想要取消所做的更改,则可以导入备份副本。

  1. 通过单击「开始」按钮  ,在搜索框中键入 regedit,然后按 Enter,打开注册表编辑器。‌   如果系统提示您输入管理员密码或进行确认,请键入该密码或提供确认。
  2. 找到并单击要备份的项或子项。
  3. 单击“文件”菜单,然后单击“导出”
  4. “保存于”框中,选择要保存备份副本的位置,然后在“文件名”框中键入备份文件的名称。
  5. 单击“保存”

5.  分散与集中之争

主流操作系统中,Linux操作系统一直使用单独的文本文件来存放配置信息。而Windows平台下基于.NET框架的软件对注册表的依赖性也大大减弱。事实上,.NET软件通常使用纯文本的XML(称为app.config)文档而不是注册表进行配置,这在某种意义上是向当初的ini文本配置方式的一种回归。

部分绿色软件支持者认为,集中式的注册表要求软件需要进行专门的安装步骤才可以正常运行,而单独的文本配置文档则可以不需要安装,只要将软件的文档目录拷贝过来就可以使用;当不再需要软件的时候,除删除相关文档外对于注册表也需要进行卸载步骤,才有可能不在系统中留下痕迹(很多软件即使提供了卸载步骤,仍然会留下痕迹),如果使用文本配置文档,则能做得更干净。但是,文本配置方式导致某些系统软件的配置较为困难且缺乏统一的界面(如Linux中的情况),也是不争的事实,尽管现在已经有很多软件可以方便进行系统配置,但仍存在标准不够统一的问题。

1 0
原创粉丝点击