MFC中读取注册表键值和键名的问题!

ccc43542876 2014-04-10 09:25:03
这段代码是为了循环读取某个注册表路径下,对应的键名和键值
while(true)
{
Ret=RegEnumValue(hKey,i,szValueName,&dwBufsize,NULL,&dwType,
( unsigned char *)szValueKey,&dwKeysize);
if (Ret==ERROR_NO_MORE_ITEMS)
{
break;
}
strtemp.Format("%d",i);
m_listctrl.InsertItem(i,strtemp);
m_listctrl.SetItemText(i,1,szValueName);
m_listctrl.SetItemText(i,2,szValueKey);
i++;
memset(szValueKey,0,MAXBYTE);
memset(szValueName,0,MAXBYTE);
}

但是只能读取第一个,后面的都读不出来,是空的。
但是我如果把While循环去掉,i我手动输入不同值的时候,可以把剩下的几个都读取到。。这个是什么情况?
为什么不能循环的读一个,向listctrl写一个,读一个写一个这样循环进行呢,调试了半天,就是第二次进循环以后szValueName和szValueKey就变空了!求救!!
...全文
320 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
kuankuan_qiao 2014-04-11
  • 打赏
  • 举报
回复
引用 4 楼 ccc43542876 的回复:
引用 2 楼 zgl7903 的回复:
dwBufsize 和 dwKeysize 需要每次填值,因为返回时会被修改
谢拉。。。我自己也弄出来了。查了MSDN,英语不太给力,没看到那个2个参数会变动。
ccc43542876 2014-04-10
  • 打赏
  • 举报
回复
引用 2 楼 zgl7903 的回复:
dwBufsize 和 dwKeysize 需要每次填值,因为返回时会被修改
谢拉。。。我自己也弄出来了。查了MSDN,英语不太给力,没看到那个2个参数会变动。
叶恭介叶恭介 2014-04-10
  • 打赏
  • 举报
回复
参考例子:
//打开串口注册表
		LONG result = RegOpenKeyEx(HKEY_LOCAL_MACHINE, _T("Hardware\\DeviceMap\\SerialComm"), NULL, KEY_READ, &hKey);

		if (result == ERROR_SUCCESS)     
		{
			DWORD dwPortName = 0;
			DWORD dwComName = 0;

			TCHAR cPortName[MAX_PATH];

			TCHAR cComName[MAX_PATH];  

			DWORD dwIndex = 0;

			CString strComName = _T("");

			while(1)   
			{
				ZeroMemory(cPortName, MAX_PATH);
				ZeroMemory(cComName, MAX_PATH);

				dwPortName = MAX_PATH;
				dwComName = MAX_PATH;

				if (::RegEnumValue(hKey, dwIndex, cPortName, &dwPortName, NULL, NULL, (LPBYTE)cComName, &dwComName) == ERROR_NO_MORE_ITEMS)
				{
					break;
				}

				strComName.Format(_T("%s"), cComName);

				pComBox->AddItem(cComName);

				dwIndex++;
			}

			RegCloseKey(hKey);   

		}  
zgl7903 2014-04-10
  • 打赏
  • 举报
回复
dwBufsize 和 dwKeysize 需要每次填值,因为返回时会被修改
ccc43542876 2014-04-10
  • 打赏
  • 举报
回复
自己顶!大神来帮忙。看了很久了,不知道哪里出问题了。

16,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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