如何迭代注册表值而不是键? [英] How do you iterate through registry values as opposed to keys?

查看:82
本文介绍了如何迭代注册表值而不是键?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

使用类CRegKey(https://msdn.microsoft.com/en-us/library/xkaby1xz.aspx),我可以很愉快地遍历注册表项。


但是你如何对注册表值做同样的事情 - 肯定有办法!


但上面的MSDN页面没有帮助,我找不到任何例子。

 if(regkey.Open(HKEY_LOCAL_MACHINE," HARDWARE \\DEVICEMAP \\SERIALCOMM",KEY_READ)== ERROR_SUCCESS)
{
while((nCode = regkey.EnumKey(dwI,szKeyName,(LPDWORD)& nBuffSize))== ERROR_SUCCESS)
{
strKeyName = szKeyName;
strKeyName.Delete(0,3);
nPortNum = atoi(strKeyName);
if(nPortNum> 1)
rarrayCOMPorts.Add(nPortNum);
dwI ++;
}
}

基本上我希望从上面的注册表项中获取一个windows com端口号列表。但是这段代码不起作用,因为com端口值不是键。



你是怎么做到的?



解决方案

>但是你如何对注册表做同样的事情价值 - 肯定有必要!


RegEnumValue

https://msdn.microsoft.com/en-us/library/windows/desktop/ms724865 (v = vs.85).aspx


Dave



Using class CRegKey (https://msdn.microsoft.com/en-us/library/xkaby1xz.aspx), I can quite happily iterate through registry keys.

But how do you do the same for registry values - there MUST be a way surely!

But the above MSDN page is no help and I have not been able to find any examples.

	if (regkey.Open(HKEY_LOCAL_MACHINE, "HARDWARE\\DEVICEMAP\\SERIALCOMM", KEY_READ) == ERROR_SUCCESS)
	{
		while ((nCode = regkey.EnumKey(dwI, szKeyName, (LPDWORD)&nBuffSize)) == ERROR_SUCCESS)
		{
			strKeyName = szKeyName;
			strKeyName.Delete(0, 3);
			nPortNum = atoi(strKeyName);
			if (nPortNum > 1)
				rarrayCOMPorts.Add(nPortNum);
			dwI++;
		}
	}

Basically I wish to get a list of windows com port numbers from the above registry key. However this code does not work because the com ports are value not keys.

How do you do this?

解决方案

>But how do you do the same for registry values - there MUST be a way surely!

RegEnumValue
https://msdn.microsoft.com/en-us/library/windows/desktop/ms724865(v=vs.85).aspx

Dave


这篇关于如何迭代注册表值而不是键?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆