读取/枚举注册表路径失败“SOFTWARE\Microsoft\Windows\CurrentVersion\Telephony\国家/地区列表”

问题描述 投票:0回答:1

我想枚举注册表路径。

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;

这个节点有什么问题?

c++ windows registry atl
1个回答
0
投票

天哪...答案很简单。我有一个32位程序,并且无法从32位读取该节点。没有映射。

我必须使用

KEY_WOW64_64KEY
标志才能访问它。

© www.soinside.com 2019 - 2024. All rights reserved.