RegEnumValue读取注册表不完整问题
2015-09-07 13:43
375 查看
问题描述:在用RegEnumValue枚举串口资源时,注册表中有多个串口,但是RegEnumValue在读取时,只能读取其中一部分,不能完全枚举所有串口。
原因及解决办法:
Status=RegEnumValue(hKey,dwIndex++,Name,&dwName,NULL,&Type,szPortName,&dwSizeofPortName);
在每次读取后,dwName和dwSizeofPortName的值发生改变,表示读取了多少字符。在下次读取时,若dwName和dwSizeofPortName的值小于实际需要读取的长度时,则读取失败,读取为空。因此需要在每次读取前,对dwName和dwSizeofPortName需要重新赋值。
dwName=MAXBYTE; //MAXBYTE=0xff
dwSizeofPortName=MAXBYTE;
Status=RegEnumValue(hKey,dwIndex++,Name,&dwName,NULL,&Type,szPortName,&dwSizeofPortName);
修正后则能全部读取注册表中的内容。
以上针对注册表中数据类型为REG_SZ格式,其他格式待验证!
原因及解决办法:
Status=RegEnumValue(hKey,dwIndex++,Name,&dwName,NULL,&Type,szPortName,&dwSizeofPortName);
在每次读取后,dwName和dwSizeofPortName的值发生改变,表示读取了多少字符。在下次读取时,若dwName和dwSizeofPortName的值小于实际需要读取的长度时,则读取失败,读取为空。因此需要在每次读取前,对dwName和dwSizeofPortName需要重新赋值。
dwName=MAXBYTE; //MAXBYTE=0xff
dwSizeofPortName=MAXBYTE;
Status=RegEnumValue(hKey,dwIndex++,Name,&dwName,NULL,&Type,szPortName,&dwSizeofPortName);
修正后则能全部读取注册表中的内容。
以上针对注册表中数据类型为REG_SZ格式,其他格式待验证!
相关文章推荐
- 用注册表文件实现解开被锁定的.reg与inf文件
- 注册表导出管理员密码文件
- 修改注册表实现在桌面上显示Windows版本
- 用注册表清除3389登陆记录的方法
- 常见的注册表修改大全第1/3页
- vbscript 注册表脚本书写
- vbscript Registry 注册表操作实现代码(读写删除)
- vbs 注册表操作代码(添加删除)
- 杀毒除根 巧用注册表防止病毒重新生成
- vbs删除注册表项的代码
- 批处理操作注册表完全攻略(读取注册表/写入注册表等)
- 写给电脑初学者的一些建议(注册表篇)
- CMD下读取/修改/删除注册表项的方法
- C#实现读取注册表监控当前操作系统已安装软件变化的方法
- PowerShell使用Remove-Item命令删除文件、注册表项介绍
- C#通过windows注册表获取软件清单的方法
- 读取注册表根据Office版本获取数据库连接字段
- 在DOS方式下对注册表进行操作的代码
- 用vbs操作注册表实例代码
- C# 注册表 操作实现代码