代码如下:
void reg_enum (HKEY hMainKey, char *subkey)
{
int i    = 0;
long ret = 0;
HKEY hkey;

ret = ::RegOpenKeyEx(hMainKey, subkey, 0, KEY_READ, &hkey);
if (ret != ERROR_SUCCESS)
{
::RegCloseKey (hkey);
return;
} TCHAR key[MAX_PATH]   = {0};
TCHAR subkey_name[MAX_PATH] = {0};
unsigned long subkey_len    = sizeof(subkey_name);

int j = 0;
TCHAR value_name[MAX_PATH] = {0};
unsigned long value_len = sizeof(value_name); while (1)
{
subkey_len = sizeof(subkey_name);
ret = ::RegEnumKeyEx(hkey, i, subkey_name, &subkey_len, 0, NULL, NULL, NULL);
if (ret != ERROR_SUCCESS)
{
break;
} if (subkey == NULL)
sprintf(key, "%s", subkey_name);
else
sprintf(key, "%s\\%s", subkey, subkey_name); cout << key <<endl; reg_enum(hkey, key); i++; }
}int main()
{
HKEY hkey; long ret = 0; ret = ::RegOpenKeyEx(HKEY_CURRENT_CONFIG, NULL, 0, KEY_READ, &hkey);
if(ret == ERROR_SUCCESS)
{
reg_enum(hkey, NULL);
} ::RegCloseKey(hkey); return 0;
}
结果如下:
Software
Software\Fonts
Software\Microsoft
System
System\CurrentControlSet