这段代码只能读取出注册表中几个值,其它的都报告错误,好象和注册表值的长度有关系,
我建了一个新的字符串值为"aa"就能读到,但是我多填了些"a"再读的时候就报错了,请问
是怎么回事,谢谢CString str;
HKEY k;
DWORD type=REG_SZ;
char value[100];
char t[1000];str="SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run";
k=HKEY_LOCAL_MACHINE;if(RegOpenKeyEx(k,str,0,KEY_READ,&k)!=ERROR_SUCCESS)
return;
DWORD shu;
DWORD shu1;
for(DWORD i=0;;i++)
{
if(::RegEnumValue(k,i,value,&shu1,NULL,&type,(BYTE*)t,&shu)!=ERROR_SUCCESS)
{
::AfxMessageBox("读取注册表错误");
}
}

解决方案 »

  1.   

    DWORD shu;
    DWORD shu1;
    for(DWORD i=0;;i++)
    {
              shu = 500;
              shu1= 500;
    if(::RegEnumValue(k,i,value,&shu1,NULL,&type,(BYTE*)t,&shu)!=ERROR_SUCCESS)
    {
    ::AfxMessageBox("读取注册表错误");
    }
    }
    RegEnumValue之后返回数据的长度,如果你不再次给他赋值,下一个读的数据,如果大于上一个的长度,就会出错