Максимальный размер не правильно даешь.
Вместо len=maxlen; поставь len=1000;
ошибку тут
Код:
RegQueryInfoKey(key,0,0,0,0,&maxlen,0,0,0,0,0,0);
//maxlen++;
for(;;)
{
len=maxlen;
memset(kname,NULL,1024*10);
retk=RegEnumKeyEx(key,keyind,kname,&len,0,0,0,0);
судя по виду RegQueryInfoKey(key,0,0,0,0,&maxlen,0,0,0,0,0,0); обламывается или дает не верный результат. Или в этом редультате значение чуть несчитая завершающий символ 0x00
по этмоу len содержит не правильный размер.
т.к. ты игнориш это значение и выделяешь фиксировано память через memset(kname,NULL,1024*10);
то и присвой len=1024*10 вместо len=maxlen;