当前位置:C++技术网 > 资讯 > 注册表编程系列:1 注册表基础常识

注册表编程系列:1 注册表基础常识

更新时间:2015-06-24 00:12:41浏览次数:1+次

    在开始讲述之前,你得清楚一个事实,注册表是Windows才有的东西。注册表是什么东西呢?什么是注册?我们来仔细瞧瞧。
    注册表,是用来记录的一张表,就类似于Excel中的表一样。所谓注册,就是在Windows中的操作都是被记录存放在注册表中的。比如安装软件,系统的状态等等各种信息全部记录在注册表中了。Windows系统中的一举一动,在注册表都有记录,注册表几乎是系统的一个核心部件。注册表的修改不正确,甚至可以导致系统崩溃。常见的网络连接,病毒攻入感染了注册表,网络就不能正常的连接了。所以,Windows中,注册表的作用可想而知。
    为什么会诞生注册表呢?你不要以为这是多此一举。注册表不是一开始就有的。之前的操作系统,记录信息使用ini配置文件。现在的系统如Win7也可以看得到ini文件,只不过只是作为一种过渡而已。微软建议的是完全使用注册表,而不要使用ini文件。之所以采用注册表,是因为ini作为一个文件,随着记录越来越多,文件越来越大,操作起来也就越来越慢。从成千上万条文本中找到一个文本,效率非常低。而使用了注册表,就大大提高了执行效率。注册表更类似与数据库。其实应该可以称作是一个数据库。注册表的各种记录以及访问权限几乎都和数据库差不多。并且注册表中的条目非常庞大,不过通过分门别类,就不至于效率很低。用户也方便在注册表中建立自己的条目,记录自己的信息。如果你还只是停留在配置文件ini的阶段,请认真的学习一下注册表相关知识。
    同时按住“Window”+“R”键弹出“运行”对话框,输入"regedit",回车即可进入注册表编辑器。操作的时候请对照本文,理解效果更好。
    最上面的是“计算机”,下面有五个条目,分别是HKEY_CLASSES_ROOT, HKEY_CURRENT_USER,HKEY_LOCAL_MACHINE,HKEY_USERS和HKEY_CURRENT_CONFIG。这五个条目就是根条目。在注册表中,称里面的条目为键。从开头的HKEY可以看到这个意思。这些根条目就称为“根键”,根键下面的都是子键。相当于根目录和子目录的意思。而根键都有一个文件夹的图标,也是形象的说明这个意思。
    展开根键,看到很多子键。单击子键,在右侧可以看到一些条目。这些条目就是“键值项”。你可以右击,然后添加一些键值项。可以新建项,就是左边的子键。可以新建键值项,就是右边显示的一些条目。Win7键值项有几个:字符串、二进制值、DWORD、QWORD、多字符串值和可扩充字符串值。键值项由三个部分组成:名称、类型和数据。
    类型有8中,为:

REG_SZ                以0结尾的字符串类型
REG_BINARY            二进制数据类型
REG_DWORD             双字节数据类型
REG_DWORD_BIG_ENDIAN  高位排在底位的双字类型
REG_EXPAND_SZ         扩展字符串类型,可以加入变量如%PATH%
REG_LINK              UNICODE 符号链接类型
REG_RESOURCE_LIST     设备驱动程序资源列表类型
REG_MULTI_SZ          多字符串类型

    不过不同版本的系统可能类型个数不一样。不过最常用最基础的也就是前面三种。也就是Win7键值项的前三种。而平时我们软件记录信息则多是第一种和第三种。
    你可以将信息写入到注册表中,设置相应的值,下次软件启动时,去读取注册表中你设定的键值项,然后获得数值,在软件启动时做出相应调整。比如软件的皮肤设置、登陆账号等等。
    学会利用注册表记录信息,是非常有帮助的。甚至可以利用注册表作为软件之间的通信。将注册表作为交换数据的枢纽。微软将注册表作为标准记录方式,自然在软件开发时一般情况也是首选注册表。
    以前的注册表编程的API是没有权限设置的,但是Windows系统的版本更新,不断的注重安全,也就加入了很多的安全特性,在注册表操作方面也是有了安全访问限制的。旧版的API是以全部访问权访问的,在新版系统中,可能就会访问失败。新版的API提供的注册表操作函数是在旧版函数名后加了Ex的函数。所以在今后的编程中,建议使用Ex版的函数来操作,对新系统的兼容性更好,程序健壮性就更好。