check_error(); // 4.b) Create the HKCU\TestRegistry\Values\WShellExpandedStringValue key $registry->SetValue(Registry::HKCU, $test_key, 'WShellExpandedStringValue', 'this is a sample WSHELL expanded string value, WINDIR = %WINDIR%', Registry::REG_EXPAND_SZ); check_error(); // 4.c) Create the HKCU\TestRegistry\Values\WShellDWORDValue key $registry->SetValue(Registry::HKCU, $test_key, 'WShellDWORDValue', 0x1020304, Registry::REG_DWORD); check_error(); // 5) Enumerate all the values in the HKCU\TestRegistry\Values key with their type $keys = $registry->EnumValues(Registry::HKCU, $test_key, false); check_error(); echo "Created values :{$eol}"; foreach ($keys as $key => $type) { echo "{$tab}{$key} ({$type}){$eol}"; } // 6) Enumerate all the values in the HKCU\TestRegistry\Values key, using registry value objects $keys = $registry->EnumValuesEx(Registry::HKCU, $test_key); check_error(); echo "Created RegistryValue objects :{$eol}"; foreach ($keys as $value) { echo "{$tab}" . str_replace("{$eol}", "{$eol}{$tab}", print_r($value, true)); } // 7) Retrieve created key values - You must known the type of each key before doing that, or else use the GetValue() method, // which works only on REG_SZ, REG_EXPAND_SZ, REG_DWORD and REG_BINARY types. echo "Created values :{$eol}"; echo "{$tab}{$test_key}/BinaryValueFromArray : " . $registry->GetBinaryValue(Registry::HKCU, $test_key, 'BinaryValueFromArray') . $eol; echo "{$tab}{$test_key}/BinaryValueFromHexString : " . $registry->GetBinaryValue(Registry::HKCU, $test_key, 'BinaryValueFromHexString') . $eol; echo "{$tab}{$test_key}/BinaryValueFromString : " . $registry->GetBinaryValue(Registry::HKCU, $test_key, 'BinaryValueFromString') . $eol; echo "{$tab}{$test_key}/DWORDValue : 0x" . sprintf("%08X", $registry->GetDWORDValue(Registry::HKCU, $test_key, 'DWORDValue')) . $eol; echo "{$tab}{$test_key}/ExpandedStringValue : " . $registry->GetExpandedStringValue(Registry::HKCU, $test_key, 'ExpandedStringValue') . $eol; echo "{$tab}{$test_key}/BinaryValueFromHexString : " . $registry->GetBinaryValue(Registry::HKCU, $test_key, 'BinaryValueFromHexString') . $eol; echo "{$tab}{$test_key}/MultiStringValueMultiple : " . implode(', ', $registry->GetMultiStringValue(Registry::HKCU, $test_key, 'MultiStringValueMultiple')) . $eol;