VC遍历注册表

来源:互联网 发布:抗氧化面膜 知乎 编辑:程序博客网 时间:2024/06/06 04:28

最近在学习windows api编程,做些笔记,虽然有些东西不是很懂,但还是学会用吧,用多了就会熟的

使用到的函数

1、RegOpenKeyEx

2、RegQueryKeyInfo
3、RegEnumKeyEx

4、RegEnumValue


源代码如下:

#include <windows.h>#include <stdio.h>int main(){HKEY hKey = NULL;if (!RegOpenKeyEx(HKEY_CURRENT_USER,"Software",0,KEY_READ | KEY_WRITE,&hKey) == ERROR_SUCCESS){printf("打开注册表失败!\n");return -1;}char  szClassname[255];//类名DWORD dwClassnameLength;//装载类名缓冲区的长度            DWORD dwsubsum;//保存这个项的子项数量DWORD dwMaxSubKeyLen;//装载这个项最长一个子项的长度 DWORD dwMaxClassLen;//装载这个项之子项的最长一个类名的长度  DWORD dwValues;//用于装载这个项的设置值数量的一个变量DWORD dwMaxValueNameLen;//装载这个项之子项的最长一个值名的长度        DWORD dwMaxValueLen;//装载容下这个项最长一个值数据所需的缓冲区长度               DWORD dwSecurityDescriptor;//装载值安全描述符长度的一个变量      FILETIME strftLastWriteTime;//指定一个结构,用于容纳该项的上一次修改时间// 获取类名和数量DWORD dwret = RegQueryInfoKey(hKey,                    // 键的句柄szClassname,             //  类名 &dwClassnameLength,      // 类名长度 NULL,                    // 保留&dwsubsum,               // 子键的数量&dwMaxSubKeyLen,         // 子键长度&dwMaxClassLen,          // 类长度&dwValues,               // 子键键值数量&dwMaxValueNameLen,      // 子键名长度&dwMaxValueLen,          // 键值长度&dwSecurityDescriptor,   // 安全描述符&strftLastWriteTime);    // 最后写时间 char szKeyvalue[255];DWORD dwKeyvalueLen;// 列举子键    if (dwsubsum != 0){printf( "子键的数量为: %d\n", dwsubsum);for (int i=0; i<dwsubsum; i++) { memset(szKeyvalue,0,sizeof(szKeyvalue));dwKeyvalueLen = 255;dwret = RegEnumKeyEx(hKey, i,//欲获取的子项的索引。第一个子项的索引编号为零szKeyvalue,//用于装载指定索引处项名的一个缓冲区&dwKeyvalueLen, //装载szKeyvalue的实际长度NULL, NULL, NULL, &strftLastWriteTime); if (dwret == ERROR_SUCCESS) {printf("(%d)----- %s\n", i+1, szKeyvalue);}}} char szSubKeyvalue[255] = {0};DWORD dwSubKeyvalueLen;// 列举键值if (dwValues != 0) {printf( "子键键值数量为: %d\n", dwValues);for (int i=0, dwret=ERROR_SUCCESS; i<dwValues; i++) {memset(szSubKeyvalue,0,sizeof(szSubKeyvalue));dwSubKeyvalueLen = 255;dwret = RegEnumValue(hKey, i, //注意第一个值的索引编号为零szSubKeyvalue, &dwSubKeyvalueLen, NULL, NULL,NULL,NULL);if (dwret == ERROR_SUCCESS ) { printf("(%d)----- %s\n", i+1, szSubKeyvalue); } }}return 0;}

更多博客文章,欢迎访问:http://blog.csdn.net/llj42270012

转载注明出处

原创粉丝点击