Используя этот фрагмент кода:
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 )