Нужно проверить существует ли ключ Код (Text): invoke RegOpenKeyEx,hKey,addr szKey,0,KEY_ALL_ACCESS,addr hKey .if eax != ERROR_SUCCESS invoke GetLastError invoke wsprintf,addr szKey,addr numformattostr,eax invoke MessageBox,0,addr szKey,0,MB_OK .else invoke RegCloseKey,hKey .endif Когда RegOpenKeyEx возвращает не ERROR_SUCCESS, GetLastError показывает 0. Как это понимать?
А с чего ты взял что это так? FormatMessage тебе не нужен, ты читал цитату из мсдн ? If the function fails, the return value is a nonzero error code defined in Winerror.h Она код ошибки возвращает. Берешь этот код и смотришь в winerror.h его описание. И вообще, чем тебе не подходит RtlCheckRegistryKey ?
Из описания GetLastError? Недосмотрел. Это мне и было нужно. Спасибо. Тем, что нужно для обычного win32-приложения, а не для драйвера.
Я этого не говорил. Но считаю, что для приложений лучше использовать функции из библиотек для приложений, а не из библиотек драйверов.
В любом случае, в MSDN она находится в разделе Windows Driver Kit > Kernel-Mode Driver Architecture > Reference > Driver Support Routines > Run-Time Library (RTL) Routines
vg мсдн это не святая истина Если бы вы посмотрели код RtlCheckRegistryKey вы бы увидели что она вызывает сервисы NtOpenKey, NtCreateKey. Их же в конечном итоге вызовет и RegOpenKey. Просто надо понимать как оно в общем будет работать. И что Rtl ф-ция работает быстре. А что использовать решать вам)