Windows - Registeroperasjoner

Spesifikke windows-funksjoner for oppdatering av registeret.
https://docs.microsoft.com/en-us/windows/win32/api/winreg/

Alle funksjonene kan brukes med windows.h

Åpne key

Åpne en key for lesning/endring.

Dokumentasjon:
https://docs.microsoft.com/en-us/windows/win32/api/winreg/nf-winreg-regopenkeyexa

LPCSTR keyString = "SOFTWARE\\Example\\KeyStr";
HKEY keyHandle;

LSTATUS keyStatus = RegOpenKeyExA(
    HKEY_LOCAL_MACHINE, keyString, 0, KEY_ALL_ACCESS, &keyHandle
);

Hent verdi

Hent verdi fra en key.

Dokumentasjon:
https://docs.microsoft.com/en-us/windows/win32/api/winreg/nf-winreg-reggetvaluea

std::string default_value = "NO_VALUE_FOUND";
CHAR buffer[32];
DWORD sbuffer = sizeof(buffer);

LSTATUS query = RegGetValueA(
    keyHandle, NULL, index, RRF_RT_ANY, NULL, (LPBYTE)buffer, &sbuffer
);

value = (ERROR_SUCCESS == query) ? buffer : default_value;

Oppdater verdi (RegSetValueExA)

Oppdater key verdi.

Dokumentasjon:
https://docs.microsoft.com/en-us/windows/win32/api/winreg/nf-winreg-regsetvalueexa

// open keyHandle...

char setValue[] = "ON";

LSTATUS setValue(HKEY keyHandle, LPCSTR index, LPBYTE input) {
    DWORD sValue = sizeof(input);
    LSTATUS query = RegSetValueExA(
        keyHandle, index, 0, REG_SZ, input, sValue
    );
    return query;
}

LSTATUS set1 = setValue(keyHandle, "DisplayPower", (LPBYTE)setValue);

if(set1 != 0) {
    std::cout << "[ERROR]: " << set1 << std::endl;
} else {
    std::cout << "[OK] " << std::endl;
}