注册表数据结构

使用注册表编辑器之前,首先得了解注册表的数据结构,例如注册表的显示方式、主键与子键、键值项数据的类型等等。

注册表显示方式

在Windows系统中,注册表是采用“关键字”及其“键值”来描述登录项及其数据的。所有的关键字都是以“HKEY”作为前缀开头。实际上,“关键字”是一个句柄。这种约定使得系统及应用程序的开发人员,可以在使用注册表中的API函数时把它用于应用程序的开发中。为此,Windows提供了若干API函数,以便在开发 for Windows 应用程序时添加、修改、查询和删除注册表的登录项。

在注册表中,关键字可以分为两类:一类是由系统定义的,一般都称为“预定义关键字”;另一类是由应用程序定义的,由于安装的应用软件不同,其登录项也就不同。在Windows系统中,打开注册表编辑器,可以看到注册表中的关键字,如图:


注册表通过主关键字(最上层的为“根键”,例如下图中的HKEY_CURRENT_USERS就是一个根键,标题栏上也有显示)和子键来管理各种信息,下图中的“Keyboard Layout”是一个主键,展开后就可以看到它里面的子键。注册表中的所有信息是以各种形式的“键值项数据”保存下来,如下图中的键值项Attributes的数据为“REG_DWORD:0”。其中“REG_DWORD”是该键值的数据类型;“0”是代表该键值被赋予的数值。


在注册表的左边窗口中,所有的数据都是通过一种树状结构,以键和子键的方式组织起来,十分类似于资源管理器内的目录结构,如下图。每个键都包含有一组特定的信息,每个键的键名都是与它所包含的信息相关的(注册表内是以英文的方式出现,比如‘Control Panel’表示的是控制面板内的一些内容)。

如果这个键包含子键,则在注册表编辑器窗口的左边出现一个“+”号,用来表示在这个文件夹内还有好多内容。如果这个文件夹被用户打开了,那么“+”号就变为“-”号,与我们使用资源管理器的方法是一样的,如图:

时间: 2024-11-02 05:23:22

注册表数据结构的相关文章

网页用户体验:网页注册表单设计分析

网页制作Webjx文章简介:网站WEB表单的设计本质. 随着网络的发展,人们通过各种方式使用它.今天,网络购物,跟朋友或者不认识的人聊天,管理银行账户,以及一些日常应用,共享照片或视频,等等.事实上,只要能在线使用的应用基本上都已经有了. 虽然这些多样化的应用丰富了互联网,但这些任务的完成还需要一些步骤.不管是在线交易验证.评论新文章,还是管理某个应用,WEB表单总会出现在人们的视线中. 为什么是WEB表单? 在网页上,WEB表单把用户.信息.WEB产品或者服务连接了起来.它们能促进销售.捕捉用

怎样在VC++中访问和修改注册表

Windows95/98/Me的注册表包含了Windows95/98/Me的系统配置.PC机的硬件配置.Win32应用程序和用户的其他设置信息.注册表和INI文件不同,它是多层次的树状数据结构,具有六个分支(根键),每个分支又由许多的键和键值组成,而每个键则代表一个特定的配置项目. 在实际编程工作中,我们遇到了如何在Visual C++中对Windows95/98/Me注册表整个树状结构信息进行访问和修改的问题,如查询和修改注册表中用户姓名和公司名称的有关信息.通过编程实践,我们实现了在Visu

C#设置软件开机自动运行的方法(修改注册表)_C#教程

本文实例讲述了C#设置软件开机自动运行的方法.分享给大家供大家参考,具体如下: #region /// <summary> /// 开机启动项 /// </summary> /// <param name="Started">是否启动</param> /// <param name="name">启动值的名称</param> /// <param name="path"

注册表-大叔往这儿看,递归怎么用啊

问题描述 大叔往这儿看,递归怎么用啊 我写了一个遍历注册表项的小函数,现在想改写成删除掉遍历的key,难住了 好像只能从最下面的项开始删除 ,这个api删除时 要求没有子项才行,怎么写能反向遍历删除啊 ,我上传下我写的图片 求帮助.另外看看我这样写代码 对吗 有啥缺点请指出来 谢谢 解决方案 图片可不清楚,大致逻辑就是下面这样. 删除注册表() { if(有子项) { for(int i=0:i<n:i++) 删除注册表(第i个子项): } 删除自己(): } 解决方案二: 手机客户端有毛病吧

windows平台下,c++获取cpu型号,读取注册表获取系统软硬件信息代码

   下面的代码可以用于跨平台设备信息的获取 搭建传输的socket平台参考下面博文:   http://blog.csdn.net/wangyaninglm/article/details/41940287       GetsysInfo.h:   #ifndef _H_GETSYSINFO #define _H_GETSYSINFO #pragma once #include <afxtempl.h> class GetSysInfo { public: GetSysInfo(void)

期待大虾 生僻问题 关于windbg和注册表,详见内容

问题描述 首先声明:不是windowsce平台问题如下:实验:1用winHex打开一个HIVE文件,看看其里面的内容2了解与注册表有关的几个结构用命令dtnt!*cm*这样就会列出一大堆数据结构出来,关于每个数据结构是怎样的,自己再dt看比较重要的有(HBASE_BLOCK)NT!_CMHIVENT!_CMHIVENT!_CM_KEY_HASHNT!_CM_KEY_BODYNT!_CM_KEY_NODENT!_CM_KEY_VALUENT!_CM_KEY_SECURITYNT!_CM_KEY_C

注册表操作(VC_Win32)

目录 注册表概述注册表相关函数详解注册表编程 注册表概述 概述 注册表是windows操作系统中的一个核心数据库,其中存放着各种参数,直接控制着windows的启动.硬件驱动程序的装载以及一些windows应用程序的运行,从而在整个系统中起着核心作用.这些作用包括了软.硬件的相关配置和状态信息,比如注册表中保存有应用程序和资源管理器外壳的初始条件.首选项和卸载数据等,联网计算机的整个系统的设置和各种许可,文件扩展名与应用程序的关联,硬件部件的描述.状态和属性,性能记录和其他底层的系统状态信息,以

浅谈Windows XP的注册表备份_注册表

作者:高山    经常系统错误,有时甚至引起系统崩溃的情况,这时备份就显得很重要了,没有人愿意系统崩溃而只得重新装Windows XP.你可以选用不同的方法来备份你的注册表,你也可以把你的备份版本放在多种介质上,但是你首先必须明白你的计算机网络正使用何种文件系统类型.Windows XP支持FAT和NTFS两种不同的文件系统. 在这里我先介绍一下FAT,FAT32以及NTFS. 文件分配表(FAT) 一种供MS-DOS及其它Windows操作系统对文件进行组织与管理的文件系统.文件分配表(FAT

C++检查注册表中.net版本号,自动安装.net安装包,然后再执行C#程序

说实在的我的C++功底太浅,希望达人不要笑话 做这篇文章主要是为了解决斯克迪亚的这个问题实现自动判定是否有.Net框架,没有就安装.Net框架! 啥也不说了先来代码吧!代码中注释还算多,如仍有问题请在此文下面的评论中提出 代码 #include <stdio.h>#include <windows.h>#include <iostream> using namespace std; int CheckReg(){ LPSTR regeditStr = "SOF