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

直接上代码:
#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); }
运行结果如下:

浙公网安备 33010602011771号