公告:
本站正在遭受网络攻击,访问速度可能严重下降甚至无法访问。
查看“注册表”的源代码
←
注册表
跳转到导航
跳转到搜索
因为以下原因,您没有权限编辑本页:
您请求的操作仅限属于该用户组的用户执行:
用户
您必须确认您的电子邮件地址才能编辑页面。请通过
参数设置
设置并确认您的电子邮件地址。
您可以查看和复制此页面的源代码。
{{NavBar|[[Beta常识]] > '''注册表'''}} '''注册表'''(英语:Registry)是[[Microsoft Windows]]操作系统和其应用程序中的一个重要的层次型数据库,用于存储系统和应用程序的设置信息。 早在[[Windows 3.0]]推出OLE技术的时候,注册表就已经出现。但是,从[[Windows 95]]开始,注册表才真正成为Windows用户经常接触的内容,并在其后的操作系统中继续沿用至今。随后推出的Windows NT是第一个从系统级别广泛使用注册表的操作系统。 ==历史== ===前身=== 最初,Windows系统及应用程序的信息被存储在后缀名为ini的文本文件中,这就是注册表的前身。但是这么做有着致命弱点:因为每一个程序都会新安装一个或多个ini文件,来存储程序信息,导致信息的分布极为零乱;而且在16位系统下,ini文件的大小必须在64KB之内。所以ini文件被认为不便于使用和管理。 ===发布与发展=== 在最早出现于[[Windows 3.0]]的OLE技术出现后,微软为了存放系统中大量的软件组件信息,组织了一个reg.dat的数据库来存放这些信息。当时的注册表编辑器为16位版本的<code>regedit.exe</code>,功能较弱。 后来开发的[[Windows NT 3.1]]则更进一步使用相同的文件格式来存放系统的配置信息,以取代原有的ini文件。该系统为每一个用户在用户目录下创建了一个自身的注册表空间,而系统的设置被存放在系统文件夹中。由于Windows NT 3.1是一个32位操作系统,<code>regedit.exe</code>被升级为<code>regedt32.exe</code>,并增加了对权限的设置功能。 在[[Windows 95]]中,注册表首次得到广泛应用,逐渐淘汰了原有的ini文件。程序在安装时,不再将数据写入ini文件,而直接写入注册表。为了最大限度兼容旧程序,部分原来用于读写ini文件的专门API函数仍然可用,但现在是访问注册表(写入或读取)。Windows 95为了保持和Windows 3.x系列的兼容性,注册表的架构与Windows NT不同,为此专门开发了另一个32位版本的<code>regedit.exe</code>,它没有设置权限的功能。 在[[Windows 2000]]中,由于Windows 95家族已经深入人心,<code>regedit.exe</code>也得到广泛应用,相反<code>regedt32.exe</code>的界面相对比较丑陋,因此微软将windows 95系列的<code>regedit.exe</code>拿过来用。但由于移植过来的<code>regedit.exe</code>仍没有权限设置的功能,<code>regedt32.exe</code>仍然保留在系统中用作权限设置。 到[[Windows XP]]和[[Windows Server 2003]]中,<code>regedit.exe</code>已经增加了权限的功能,<code>regedt32.exe</code>由于失去作用而被剔除。同时,这个版本的注册表是64位的,这导致了一些兼容性问题,少数可以运行在旧版本Windows的程序在Windows XP中无法运行。 ===64位Windows的注册表=== 64位Windows中的注册表总体结构大致与32位版本相同,但32位程序的信息被放在<code>HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node</code>中。 ==数据结构== 注册表由项(key)、子项(subkey)和值(value)构成。一个项就是树状数据结构中的一个节点,而项就是这个节点的子节点,子项熟语项。一个值项则是一个项的一条属性,由名称、数据类型和数据组成。一个项可以有一个或多个值,每个值的名称各不相同,如果一个值的名称为空,则该值为该项的默认值。 ===数据类型=== 注册表的数据类型主要有以下五种: {| class="wikitable" style="width: 100%" |- ! 显示类型(在编辑器中) ! 数据类型 ! 说明 |- | REG_SZ | 字符串 | 文本字符串 |- | REG_BINARY | 二进制数 | 不定长度的二进制值,以十六进制显示 |- | REG_DWORD | 双字 | 一个 32 位的二进制值,显示为 8 位的十六进制值 |- | REG_MULTI_SZ | 多字符串 | 含有多个文本值的字符串,此名来源于字符串间用 nul 分隔、结尾两个 nul |- | REG_EXPAND_SZ | 可扩展字符串 | 含有环境变量的字符串 |- |} 此外,注册表还有其他的数据类型,但是均不常用: * REG_DWORD_BIG_ENDIAN - DWORD 的大头版本,下面同理 * REG_DWORD_LITTLE_ENDIAN * REG_FULL_RESOURCE_DESCRIPTOR * REG_QWORD - DWORD 的四字(64 位)版本 * REG_FILE_NAME ===注册表的分支结构=== 注册表有五个主分支,下面是这五个分支的名称及作用: {| class="wikitable" style="width: 100%" |- ! 名称 ! 作用 |- |HKEY_CLASSES_ROOT |存储Windows可识别的文件类型的详细列表,以及相关联的程序。 |- |HKEY_CURRENT_USER |存储当前用户设置的信息。 |- |HKEY_LOCAL_MACHINE |包括安装在计算机上的硬件和软件的信息。 |- |HKEY_USERS |包含使用计算机的用户的信息。 |- |HKEY_CURRENT_CONFIG |这个分支包含计算机当前的硬件配置信息。 |- |} ===注册表的存储方式=== Windows NT系列操作系统和Windows 9x系列的存储方式有很大区别。注册表被分成多个文件存储,称为Registry Hives,每一个文件被称为一个配置单元。 在早期的Windows 3.x系列中,注册表仅包含一个reg.dat文件,所存放的内容后来演变为HKEY_CLASSES_ROOT分支。 Windows NT家族的配置单元文件: (未完待续) ==参考== ==参见== * [[注册表编辑器]]
本页使用的模板:
模板:NavBar
(
查看源代码
)(受保护)
返回
注册表
。
我们提供服务需要使用Cookie。您使用我们的服务,即表示您同意我们使用Cookie。
确定
导航菜单
个人工具
创建账号
登录
命名空间
页面
讨论
大陆简体
查看
阅读
查看源代码
查看历史
更多
搜索
导航
首页
最近更改
随机页面
MediaWiki帮助
编辑指南
使用本百科
批量上传文件
深色模式
工具
链入页面
相关更改
特殊页面
页面信息