// 0) Create the registry object
$registry = new Registry();
// 1) Enumerate all the keys under HKCU\Software and print them
$keys = $registry->EnumKeys(Registry::HKCU, 'Software');
check_error();
echo "Registry keys for HKCU\\Software :\n";
foreach ($keys as $key) {
    echo "{$tab}{$key}{$eol}";
}
// 2) Create the HKCU\TestRegistry\Values key
$test_key = 'TestRegistry/Values';
// Slashes are replaced by backslashes
$registry->CreateKey(Registry::HKCU, $test_key);
check_error();
// 3.a.1) Create the HKCU\TestRegistry\Values\BinaryValueFromString key
$registry->SetBinaryValue(Registry::HKCU, $test_key, 'BinaryValueFromString', 'ABCDEF');
check_error();
// 3.a.2) Create the HKCU\TestRegistry\Values\BinaryValueFromrArray key (set to "ABC")
$registry->SetBinaryValue(Registry::HKCU, $test_key, 'BinaryValueFromArray', [65, 66, 67]);
check_error();
// 3.a.3) Create the HKCU\TestRegistry\Values\BinaryValueFromrHexString key (set to "0123456789ABCDEF")
$registry->SetBinaryValueFromHexString(Registry::HKCU, $test_key, 'BinaryValueFromHexString', "0123456789ABCDEF");
check_error();
// 3.b) Create the HKCU\TestRegistry\Values\DWORDValue key (set to 0x01020304)
$registry->SetDWORDValue(Registry::HKCU, $test_key, 'DWORDValue', 0x1020304);
check_error();
// 3.c) Create the HKCU\TestRegistry\Values\ExpandedStringValue key, referencing the %WINDIR% environment variable
$registry->SetExpandedStringValue(Registry::HKCU, $test_key, 'ExpandedStringValue', '%WINDIR%\\Something');
check_error();
// 3.d.1) Create the HKCU\TestRegistry\Values\MultiStringValueSingle key
$registry->SetMultiStringValue(Registry::HKCU, $test_key, 'MultiStringValueSingle', 'A sample string');