MSDN entry for RegOpenKeyEx
также указывает на то, что:
Если функция завершается ошибкой, возвращаемое значение является ненулевым кодом ошибки определяется в Winerror.h.
Эти коды ошибок задокументированы на странице MSDN - System Error Codes. Если вы действительно получаете 7, то эта ошибка будет соответствовать:
ERROR_ARENA_TRASHED
7 (0x7)
Блоки управления для хранения были уничтожены.
Что это означает, что может варьироваться от вашего реестра коррумпируется, к убиванию программных ошибок, в результате, казалось бы, странным поведение, или просто, что вы получаете что-то другое в качестве возвращаемого значения и приводят к поверить, что вы получаете результат 7. Без более полного примера кода, трудно предпринять что-то более конкретное.
P.S.: FormatMessage
в основном удобен, если вы пытаетесь получить строковое представление ошибки во время выполнения. Если это так, вы можете обратиться к this answer за примером о том, как его использовать.
Да, это плохо разработанный API. Коды системных ошибок задокументированы на [MSDN] (https://msdn.microsoft.com/en-us/library/windows/desktop/ms681382%28v=vs.85%29.aspx). Кстати, действительно ли это 7? – cremno
MSDN также говорит: «Если функция не работает, возвращаемое значение представляет собой ненулевой код ошибки, определенный в Winerror.h», который вы можете получить из [MSDN - системные коды ошибок] (https://msdn.microsoft.com/) ан-нас/библиотека/окна/настольные/ms681382% 28В = vs.85% 29.aspx). Если вы действительно получаете 7, это соответствует 'ERROR_ARENA_TRASHED'. – SleuthEye
'ERROR_ARENA_TRASHED' довольно неправдоподобно. MCVE пожалуйста. –