注册表操作(二):枚举键值

在注册表操作(一)中,我们列举了子键,这会我们就列举键值,即下图红框中的数据:

注册表操作(二):枚举键值_第1张图片

直接上代码:

#include <windows.h>
#include <stdio.h>

void ReadKey(char * subkey)
{
    HKEY shKey;
    if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, subkey,0, KEY_READ,&shKey) == ERROR_SUCCESS) 
    {
        DWORD nvalues = 0;
        int m = 0;
        DWORD index = 0;
        char ValueName[1024];
        DWORD ValueLen = 255;
        DWORD DataType;
        char value[1024];
        DWORD dataSize;
        ValueName[0] = '\0';
        while(RegEnumValue(shKey,m,ValueName,&ValueLen,NULL,&DataType,(BYTE*)&value,&dataSize)==ERROR_SUCCESS)
        {
            //根据键值类型输出
            printf("%s\t",ValueName);
            if(DataType==REG_DWORD)
            {
                printf("REG_DWORD\t0x%08x\n",*value);
            }

            if(DataType==REG_SZ)
            {
                printf("REG_SZ\t%s\n",(char *)&value);
            }

            if(DataType==REG_BINARY)
            {
                printf("REG_BINARY\t");
                for(int i=0;i<dataSize;i++)
                {
                    printf("%02x ",(unsigned char)value[i]);
                }
                printf("\n");
            }

            ValueLen = sizeof(ValueName);
            dataSize = sizeof(value);
            m++;
        }    
    }
}

void main()
{
    char *defkey = "System\\Setup";
    ReadKey(defkey);
}

运行结果如下:

注册表操作(二):枚举键值_第2张图片

你可能感兴趣的:(注册表操作(二):枚举键值)