C++注册表编程

C++注册表编程

ID:40532813

大小:132.50 KB

页数:29页

时间:2019-08-04

C++注册表编程_第1页
C++注册表编程_第2页
C++注册表编程_第3页
C++注册表编程_第4页
C++注册表编程_第5页
资源描述:

《C++注册表编程》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、C++注册表编程1.基础知识注册表的组织方式跟文件目录比较相似,主要分为根键、子键和键值项三部分,与文件目录对应的话就是根目录、子目录和文件。分别介绍一下这三部分:(1)根键。分为5个,分别为HKEY_CLASSES_ROOT,HKEY_CURRENT_USER,HKEY_LOCAL_MACHINE,HKEY_USERS和HKEY_CURRENT_CONFIG,把它们理解成磁盘的五个分区可以了。(2)子键。可以有多个子键和键值项,就像一个目录中可以有多个子目录和多个文件一样。(3)键值项。可以理解为文件,它由三部分组成,分别为:名称、类型、数据。类型又分为多种主要包括如下:REG_BI

2、NARY二进制数据REG_DWORD32位双字节数据REG_SZ以0结尾的字符串REG_DWORD_BIG_ENDIAN高位排在底位的双字REG_EXPAND_SZ扩展字符串,可以加入变量如%PATH%REG_LINKUNICODE符号链接REG_RESOURCE_LIST设备驱动程序资源列表REG_MULTI_SZ多字符串注册表数据项的数据类型有8种,但最常用的主要是前3种。有了这些基础下面我们讨论如何编程实现对注册表的操作。2.打开/关闭注册表句柄在对注册表操作前应该先打开指定的键,然后通过键的句柄进行操作,打开键句柄可以用APIRegOpenKeyEx来实现,其原形如下:RegO

3、penKeyEx(hKey,//父键句柄lpSubKey,//子键句柄dwOptions,//系统保留,指定为0samDesired,//打开权限phkResult,//返回打开句柄);其中打开权限有多种,想方便的话可以指定为KEY_ALL_ACCESS,这样什么权限都有了,当函数执行成功时返回ERROR_SUCCESS。其实例代码如下:HKEYkey;LPCTSTRdata="SOFTWAREMicrosoftWindowsCurrentVersionRun";if(RegOpenKeyEx(HKEY_LOCAL_MACHINE,data,0,KEY_ALL_ACCESS,&

4、key)==ERROR_SUCCESS)...{/**//*需要执行的操作...*/}::RegCloseKey(key);要注意的是,在使用后应该调用RegCloseKey()函数关闭句柄.3.获取子键/键值信息在现实的编程操作中我们常常需要获取子键/键值的信息比如:子键/键值的数量,长度,以及数据的最大长度等等,这些信息可以通过RegQueryInfoKey函数来获取。它的原型如下:RegQueryInfoKey(hkey,//要获取信息的句柄lpClass,//接受创建健时的Class字符串lpcbClass,//lpClass的长度lpReserved,//系统保留,指定为0l

5、pcSubKeys,//子键数量lpcbMaxSubKeyLen,//子键中最长名称的长度lpcbMaxClassLen,//子键中最长Class字符串长度lpcVlaues,//键值数量lpcbMaxValueNameLen,//键值项中最长名称的长度lpcbMaxValueLen,//键值项数据最大长度lpcbSecurityDescriptor,//安全描述符长度lpftLastWriteTime,//FILETIME结构,最后修改时间);这个函数的参数很多,实际使用时,只填写自己需要的就行了,不需要的可以放个NULL就OK了,还有一点需要注意就是它所返回的长度都不包括结尾的0字

6、符,所以在使用时应该用长度+1。其实例代码如下:DWORDdwIndex=0,NameSize,NameCnt,NameMaxLen,Type;DWORDKeySize,KeyCnt,KeyMaxLen,DateSize,MaxDateLen;if(RegQueryInfoKey(key,NULL,NULL,NULL,&KeyCnt,&KeyMaxLen,NULL,&NameCnt,&NameMaxLen,&MaxDateLen,NULL,NULL)!=ERROR_SUCCESS)...{printf("RegQueryInfoKey错误");return;}用的时候套用格式就成了。有

7、了这些信息我们就可以枚举子键和键值的信息了。4.枚举子键信息枚举子键可以用API函数RegEnumKeyEx来实现,调用RegEnumKeyEx时将返回子键的名称、长度和一些相关数据。如果想得到一个键下的全部子键的话应该循环调用,直到返回ERROR_NO_MORE_ITEMS为至,就说明已经枚举完了所有数据。其函数原型如下:RegEnumKeyEx(hkey,//被枚举的键句柄dwIndex,//子键索引编号lpName,//子键名称lpcbN

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。