如何迭代注册表值而不是键? [英] How do you iterate through registry values as opposed to keys?
问题描述
使用类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).aspxDave
这篇关于如何迭代注册表值而不是键?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!