使用RegEnumKeyEx枚举注册表某个键下的所有子键,如果某个子键下还有一层或多层子键,则该子键不能被枚举,请问如何能够枚举这样的子键?谢谢。

解决方案 »

  1.   

    EnumKey(LPCSTR szKey)
    {
    HKEY hKey;

    if( ERROR_SUCCESS ==RegOpenKey(HKEY_CURRENT_USER,szKey,&hKey))
    {
    char achKey[MAX_PATH];
    DWORD i = 0,dwLen = MAX_PATH;
    while(ERROR_SUCCESS == RegEnumKeyEx(hKey, 
                         i++, 
                         achKey, 
                         &dwLen, 
                         NULL, 
                         NULL, 
                         NULL, 
                         NULL))
    {
    strncpy(achKey+strlen(szKey)+1,achKey,strlen(achKey)+1);
    strncpy(achKey,szKey,strlen(szKey));
    achKey[strlen(szKey)]='\\';
    AfxMessageBox(achKey);
    EnumKey(achKey);
    dwLen = MAX_PATH;
    }
    }
    RegCloseKey(hKey);
    }
      

  2.   

    实测发现“如果某个子键下还有一层或多层子键,则该子键不能被RegEnumKeyEx枚举”,因此简单地使用RegEnumKeyEx递归是没用的,如何解决?