RegEnumValue读取注册表不完整问题

来源:互联网 发布:济南锋刃网络 编辑:程序博客网 时间:2024/05/16 14:19

问题描述:在用RegEnumValue枚举串口资源时,注册表中有多个串口,但是RegEnumValue在读取时,只能读取其中一部分,不能完全枚举所有串口。

原因及解决办法:

Status=RegEnumValue(hKey,dwIndex++,Name,&dwName,NULL,&Type,szPortName,&dwSizeofPortName);

在每次读取后,dwName和dwSizeofPortName的值发生改变,表示读取了多少字符。在下次读取时,若dwName和dwSizeofPortName的值小于实际需要读取的长度时,则读取失败,读取为空。因此需要在每次读取前,对dwName和dwSizeofPortName需要重新赋值。

dwName=MAXBYTE; //MAXBYTE=0xffdwSizeofPortName=MAXBYTE;Status=RegEnumValue(hKey,dwIndex++,Name,&dwName,NULL,&Type,szPortName,&dwSizeofPortName);

修正后则能全部读取注册表中的内容。

以上针对注册表中数据类型为REG_SZ格式,其他格式待验证!


0 0
原创粉丝点击