我一直在关注 MSDN 关于枚举注册表子项的示例。
http://msdn.microsoft.com/en-us/library/windows/desktop/ms724256%28v=vs.85%29.aspx
在下面的代码中,我不明白为什么achValue[0] = '\0';
是必要的。我运行了一些查询 HKCU 和 HKCU\Console 的测试,结果符合预期。然后我用注释行运行相同的测试并得到相同的输出。我曾认为空终止第一个 TCHAR 会阻止 TCHAR 数组连接每个值名称 ( achValue
),但这无疑是不正确的。
if (cValues)
{
printf( "\nNumber of values: %d\n", cValues);
for (i=0, retCode=ERROR_SUCCESS; i<cValues; i++)
{
cchValue = MAX_VALUE_NAME;
achValue[0] = '\0';
retCode = RegEnumValue(hKey, i,
achValue,
&cchValue,
NULL,
NULL,
NULL,
NULL);
if (retCode == ERROR_SUCCESS )
{
_tprintf(TEXT("(%d) %s\n"), i+1, achValue);
}
}
}
另外,为什么 TCHAR 数组在块中仅以空结尾cValues
if
?achKey
MSDN 示例块中的 TCHAR 数组cSubKeys
if
不遵循相同的过程。
谢谢你。