Используя этот фрагмент кода:
TCHAR buf[255] = {0};
DWORD dwBufSize = sizeof(buf);
HKEY hKey = 0;
DWORD dwType = REG_DWORD;
if ( RegOpenKeyEx( HKEY_CURRENT_USER, TEXT("Software\\Developer\\KGReader"), 0, KEY_QUERY_VALUE, &hKey) == ERROR_SUCCESS)
{
if( RegQueryValueEx( HKEY_CURRENT_USER, TEXT("Software\\Developer\\KGReader\\ComPort"), 0, &dwType, (LPBYTE)buf, &dwBufSize ) == ERROR_SUCCESS )
{
nrPort = _wtoi(buf);
}
if( RegQueryValueEx( HKEY_CURRENT_USER, TEXT("Software\\Developer\\KGReader\\KGID"), 0, &dwType, (LPBYTE)buf, &dwBufSize ) == ERROR_SUCCESS )
{
nrCentrala = _wtoi(buf);
}
}
hKey
с помощью RegOpenKeyEx
метод.RegOpenKeyEx
возвращает ERROR_SUCCES, RegQueryValueEx
возвращает 2 (ERROR_FILE_NOT_FOUND). KGID
а также ComPort
существуют, я добавил их сам, я дважды проверил пути.Пройти hKey
полученный из RegOpenKeyEx()
позвонить в RegQueryValueEx()
функции вместо HKEY_CURRENT_USER
, Второй аргумент RegQueryValueEx()
это имя значения, а не путь.
Например:
if( RegQueryValueEx(hKey,
TEXT("ComPort"),
0,
&dwType,
(LPBYTE)buf,
&dwBufSize ) == ERROR_SUCCESS )
Не забудьте сбросить buf
а также dwBufSize
до второго звонка RegQueryValueEx
:
memset(buf, 0, sizeof(buf));
dwBufSize = sizeof(buf);
В целях сообщения об ошибках вы должны сохранить возвращаемое значение RegOpenKeyEx()
а также RegQueryValueEx()
функции, так что причина сбоя может быть известна.
Размещенный код может быть неполным, но убедитесь, что RegCloseKey(hKey)
вызывается, если вызов RegOpenKeyEx()
Был успешен.
Первый аргумент RegQueryValueEx
должен быть HKEY
открыт RegOpenKeyEx
, Кроме того, второй аргумент должен быть просто именем значения, а не полным путем:
if( RegQueryValueEx( hKey, TEXT("ComPort"), 0, &dwType,
(LPBYTE)buf, &dwBufSize ) == ERROR_SUCCESS )