Под Windows 98 не могу прочитать значение DWORD из реестра. Записывается нормально, а считать не получается. В WinXP всё работает. Вот функция записи:
DWORD dwPortNumber = 2;
HKEY hKey;
    
RegCreateKeyEx(HKEY_LOCAL_MACHINE, "SOFTWARE\\ClockRings", 0, NULL,
            REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, NULL, &hKey, NULL);
    
RegSetValueEx(hKey, "LastPortNumber", 0, REG_DWORD, (PBYTE) &dwPortNumber, sizeof(DWORD));
    
RegCloseKey(hKey);

А вот чтение:
HKEY hKey;
unsigned long size, uType;
DWORD dwNumber = 0;
    
if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, "SOFTWARE\\ClockRings", 0, KEY_QUERY_VALUE, &hKey) != ERROR_SUCCESS)
    return 1;
    
if (RegQueryValueEx(hKey, "LastPortNumber", 0, &uType,  (PBYTE) &dwNumber, &size) != ERROR_SUCCESS)
    dwNumber = 1;
    
RegCloseKey(hKey);
    
return dwNumber;

Ошибка происходит именно в функции RegQueryValueEx.