// 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');
check_error();
// 3.d.2) Create the HKCU\TestRegistry\Values\MultiStringValueMultiple key
$registry->SetMultiStringValue(Registry::HKCU, $test_key, 'MultiStringValueMultiple', ['Sample 1', 'Sample 2', 'Sample 3']);
check_error();
// 3.e) Create the HKCU\TestRegistry\Values\QWORDValue key (one greater than PHP_INT_MAX, and the other equal to 1)
$registry->SetQWORDValue(Registry::HKCU, $test_key, 'QWORDBigValue', PHP_INT_MAX * 10);
check_error();
$registry->SetQWORDValue(Registry::HKCU, $test_key, 'QWORDValue', 1);
check_error();
// 3.f) Create the HKCU\TestRegistry\Values\StringValue key
$registry->SetStringValue(Registry::HKCU, $test_key, 'StringValue', 'this is a sample string value');
check_error();
// 4.a) Create the HKCU\TestRegistry\Values\WShellStringValue key
$registry->SetValue(Registry::HKCU, $test_key, 'WShellStringValue', 'this is a sample WSHELL string value', Registry::REG_SZ);
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) {