RegGetValue не может найти имя под текущим пользователем? - PullRequest
1 голос
/ 20 февраля 2020

Я тестирую эту функцию ::RegGetValue. Приведенный ниже код возвращает успех.

DWORD data_size = 0;
LONG result = ::RegGetValue(HKEY_LOCAL_MACHINE,
                            _T("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\App Paths\\OUTLOOK.EXE"),
                            _T("Path"),
                            RRF_RT_REG_SZ, 
                            NULL, NULL,
                            &data_size);

Но если я попытаюсь найти другую запись под текущим пользователем, произойдет сбой, даже если запись существует.

DWORD data_size = 0;
LONG result = ::RegGetValue(HKEY_CURRENT_USER,
                            _T("Software\\Microsoft\\Internet Explorer\\Main\\FeatureControl\\FEATURE_BROWSER_EMULATION"),
                            _T("OUTLOOK.EXE"),
                            RRF_RT_REG_SZ, 
                            NULL, NULL,
                            &data_size);

1 Ответ

2 голосов
/ 20 февраля 2020

Все значения в ключе FEATURE_BROWSER_EMULATION являются значениями DWORD, а не значениями String, согласно документации MSDN:

Inte rnet Элементы управления функциями (B .. C): браузер Эмуляция

Указав RRF_RT_REG_SZ, вы указываете RegGetValue() только для чтения строковых значений. Это имеет смысл при чтении значения "Path" с клавиши App Paths, но при чтении с клавиши FEATURE_BROWSER_EMULATION вместо этого необходимо указать RRF_RT_REG_DWORD.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...