毛毛的小窝 — 关注技术交流、让我们一起成长

导航

关于注册表

最近在做一个项目,我主要负责软件的软件的注册,包括客户端和服务器端开发。一个软件必须要加密才可以买钱,所以必须将软件的信息写入注册表。
1、什么是注册表
        注册表是WINDOW的重要组成部分,记录了很多关于软硬件的信息。注册表中的值通过其名称进行标识。值名称由与键名相同的字符组成。值本身可以是字符串、二进制数据或者是32位无符号值。
2、说明
(1)HKEY_LOCAL_MACHINE 包含描述计算机及其配置的条目。其中包括关于处理器、系统主板、内存和已安装的软件和硬件的信息。  

(2)HKEY_CLASSES_ROOT 是与文档类型和 OLE\COM 相关的信息的支持键。这个键是 HKEY_LOCAL_MACHINE的从属键。  

(3)HKEY_USERS 用作默认用户首选设置,也作为单个用户的首选设置。  

(4)HKEY_CLASSES_USER 是用于当前(登录)用户的相关信息。  

(5)HKEY_CURRENT_CONFIG 包含了当前系统配置的信息。
3、目前的访问手段(regedit, regedt32,第三方软件,编程)
Windows提供了三种方式供编程实现:函数,Shell函数,CRegKey类(由ATL库提供,是对API的封装,简化了部分功能)。这三种方式的提供的函数大同小异;由于它们对注册表操作的函数都是原子动作,故功能强大却使用不便。
类比:dir浏览当前文件夹下的子文件夹和文件,却无法知道子文件夹中有什么;注册表操作函数也仅能浏览当前Key下的Subkey和Value,却无法知道Subkey中有什么
 
4、CRegKey 类及主要使用和函数说明

所需要头文件:atlbase.h   
常用函数 ☆ 打开一个键的函数:RegOpenKeyEx
   函数定义:LONG RegOpenKeyEx(HKEY hKey,//已经打开的键的句柄,或者直接是上述几个根键
                               LPCTSTR lpSubKey,//要打开的子键名字的地址
                               DWORD ulOptions,//保留值,必须为0
                               REGSAM samDesired,//打开方式,如读还是写
                               PHKEY phkResult//返回的打开的子键的句柄
                              );

☆ 查询某一个键值:RegQueryValueEx
   函数定义:LONG RegQueryValueEx(HKEY hKey,//要查询的键的句柄
                                  LPCTSTR lpValueName,//要查询的键值的名称
                                  LPDWORD lpReserved,//保留值
                                  LPDWORD lpType,//要查询的数据的类型
                                  LPBYTE lpData,//要返回的查询的数据
                                  LPDWORD lpcbData//预置的数据的长度
                                 );

☆ 设置一个键值RegSetValueEx
   函数定义:LONG RegSetValueEx(HKEY hKey,//要设置的键的句柄
                                LPCTSTR lpValueName,//要访问的键值的名称
                                LPDWORD lpReserved,//保留值
                                DWORD dwType,//要设置的数据的类型
                                const BYTE *lpData,//要设置的健值
                                DWORD cbData//数据的长度
                               );

posted on 2006-05-22 12:26  mjgforever  阅读(323)  评论(0编辑  收藏  举报