读取注册表出错

幻夢之葉 2015-01-16 05:22:06
RegQueryValueEx(hKEY, L"InstallDate", NULL, &type, (BYTE*)result, &len);

当键值类型为:
REG_SZ 返回值成功,读取的数据完全没有问题;
REG_DWORD 返回值成功,返回长度,但是数据为空(值为0,实际值不为这个数字)
REG_BINARY 返回值失败,错误码2

测试均在同一个项下的键值,值都不为空。
求解为何后两种类型读取出问题?!

附上读取代码
	HKEY hKEY;
LPCTSTR data_Set = L"SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\";
long ret = RegOpenKeyEx(HKEY_LOCAL_MACHINE , data_Set, 0, KEY_READ, &hKEY);
if( ret != ERROR_SUCCESS )
{
cerr<<"错误:无法打开有关的hKEY"<<endl;
return 0;
}

LPBYTE result = new BYTE[2048];
DWORD type = REG_BINARY;
DWORD len = 2048;

ret = RegQueryValueEx(hKEY, L"DigitalProductId", NULL, &type, (BYTE*)result, &len);
//DigitalProductId值不为空且路径正确,返回错误吗2
if( ret != ERROR_SUCCESS )
{
RegCloseKey(hKEY);
delete [] result;
cerr<<"错误:无法查询有关的注册表信息"<<endl;
return 0;
}
...全文
243 1 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
幻夢之葉 2015-01-16
  • 打赏
  • 举报
回复
已解决 跟KEY_READ这个参数有关!

65,187

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧