调用RegEnumKeyExA函数获取注册表的键名有些值返回为空!

if (lReturn == ERROR_SUCCESS) {
        while (ERROR_NO_MORE_ITEMS != RegEnumKeyExA(hkResult,index,szKeyName, &dwKeyLen,0, NULL, NULL, NULL))
        {
            index++;            
            if (strcmp(szKeyName,name))
            return true;
            memset(szKeyName,0,255);
            dwKeyLen = 255;
            
        }
    }

原因是每调用一次RegEnumKeyExA函数时,他的dwKeyLen值会返回回来,导致dwKeyLen改变,只要将dwKeyLen的值重新赋值一边就可以了。那可能有人会问那既然能返回长度为什么有些值为什么会返回NULL而不是键名的前几个字符呢?我猜测可能是去拿键名的时候,dwKeyLen值会和注册表里面的键名做个判断,如果dwKeyLen的长度大于键名的长度,就把键名拿出来,否则直接退出。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值