在遍历注册表的某个主键时,当主键下包含足够多的子键时总是产生错误,错误号大概是234,帮我看看怎么解决,谢谢了。程序如下:void CRegTestDlg::OnButton1() 
{
// TODO: Add your control notification handler code here
BrowseRegKey(m_hKey)

}int CRegTestDlg::BrowseRegKey(HKEY hKey)
{
//定义变量,hMainKey主键句柄;hSubKey子键句柄;
//         strSubKeyName子键字符串表示,相对于主键。
// dwLengthOfSubKeyName表示strSubKeyName大小
// iIndexOfKey列出子键列表时的序号
HKEY hMainKey=NULL;
HKEY hSubKey=NULL;
char strSubKeyName[255]="";
DWORD dwLengthOfSubKeyName=255;
int iIndexOfKey=0;//定义变量,strValueName值的名字;
// dwLengthOfValueName表示strValueName大小;
// dwTypeOfValue值的值类型
// dwValueNumber值的值。
// dwLengthOfValueNumber表示dwValueNumber的大小
char strValueName[255]="";
DWORD dwLengthOfValueName=255;
DWORD dwTypeOfValue=0;
BYTE dwValueNumber[255];
DWORD dwLengthOfValueNumber=sizeof(dwValueNumber);
int iIndexOfValue=0; long lRet;//打开当前HKEY中的所有值进行处理。
if(::RegOpenKeyEx(hKey,strSubKeyName,0,KEY_READ,&hMainKey)
!=ERROR_SUCCESS)
{
AfxMessageBox("Error: Open Registry");
return -1;
}
lRet=::RegEnumValue(hMainKey,iIndexOfValue,strValueName,
&dwLengthOfValueName,NULL,&dwTypeOfValue,
dwValueNumber,&dwLengthOfValueNumber);
while(lRet==ERROR_SUCCESS)
{
iIndexOfValue++;
dwLengthOfValueName=255;
dwLengthOfValueNumber=255;
lRet=::RegEnumValue      
                           (hMainKey,iIndexOfValue,strValueName,
&dwLengthOfValueName,NULL,&dwTypeOfValue,
dwValueNumber,&dwLengthOfValueNumber);
}
if(lRet!=ERROR_NO_MORE_ITEMS && lRet!=234)
{
                  //足够深的主键(如:HKEY_LOCAL_MACHINE)总是在这里
                  //运行到这里,但是小主键就没有问题。
AfxMessageBox("ERROR: Enum Value"); }

//当HKEY的所有值处理完毕后,搜索HKEY下所有子键,分别对其递归。
lRet=::RegEnumKeyEx(hMainKey,iIndexOfKey,strSubKeyName,
&dwLengthOfSubKeyName,NULL,NULL,NULL,NULL);
while(lRet==ERROR_SUCCESS)
{
// AfxMessageBox(strSubKeyName,MB_ICONSTOP);
if(::RegOpenKeyEx(hMainKey,strSubKeyName,0,KEY_READ,&hSubKey)
!=ERROR_SUCCESS)
{
AfxMessageBox("ERROR:Open Registry Key");
return -1;
}
if(BrowseRegKey(hSubKey)==-1)
return -1;
iIndexOfKey++;
dwLengthOfSubKeyName=255;
lRet=::RegEnumKeyEx(hMainKey,iIndexOfKey,strSubKeyName,
&dwLengthOfSubKeyName,NULL,NULL,NULL,NULL); }
if(lRet!=ERROR_NO_MORE_ITEMS)
{
AfxMessageBox("ERROR: Enum Key");
return -1;
}
return 0;}