我想枚举注册表路径。
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Telephony\Country/region List
我可以打开并枚举
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Telephony\
但是枚举节点
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Telephony\Country/region List
导致错误2!未找到。还枚举节点
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Telephony\
不显示RegEdit中显示的子节点
ASSERT(CRegKey{}.Open(HKEY_LOCAL_MACHINE, _T("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Telephony"), KEY_ENUMERATE_SUB_KEYS)==ERROR_SUCCESS);
ASSERT(CRegKey{}.Open(HKEY_LOCAL_MACHINE, _T("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Telephony\\Country/region List\\1"), KEY_READ)==ERROR_SUCCESS);
ASSERT(CRegKey{}.Open(HKEY_LOCAL_MACHINE, _T("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Telephony\\Country/region List"), KEY_ENUMERATE_SUB_KEYS)==ERROR_SUCCESS);
if (regKey.Open(HKEY_LOCAL_MACHINE, _T("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Telephony"), KEY_ENUMERATE_SUB_KEYS)==ERROR_SUCCESS)
// if (regKey.Open(HKEY_LOCAL_MACHINE, _T("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Telephony\\Country/region List"), KEY_READ)==ERROR_SUCCESS)
{
// Loop over all entries
for (DWORD dwIndex = 0; ; ++dwIndex)
{
TCHAR szCountry[64];
DWORD dwLen = MfxCountOf(szCountry);
if (regKey.EnumKey(dwIndex, szCountry, &dwLen)!=ERROR_SUCCESS)
break;
这个节点有什么问题?
天哪...答案很简单。我有一个32位程序,并且无法从32位读取该节点。没有映射。
我必须使用
KEY_WOW64_64KEY
标志才能访问它。