This commit enhances the deletion of registry values with improved
robustness and better error handling. One-line `reg.exe` calls where
errors were suppressed are replaced with PowerShell commands that
provide proper error handling. This fixes#381 where wrong `reg delete`
syntax was used.
Key changes:
- Introduce `DeleteRegistryValue` and change registry value deletion
logic to use it.
- Fix Windows version comparison to ignore patch numbers.
This ensures versions like `10.0.19045.0` are treated the same as
`10.0.19045`, resolving issues where scripts were incorrectly skipped
due to patch number differences in Windows versions.
Other supporting changes:
- Add missing revert codes.
- Include more comments in the generated code.
- Use `-LiteralPath` in all registry deletion commands to prevent
unintended wildcard expansion when '*' is used in registry paths.
- Remove unused `revertCodeComment` parameter from `DeleteRegistryKey`.
Changed scripts:
- 'Remove "Scan with Microsoft Defender" from context menu':
- Use `DeleteRegistryKey` in script.
- Remove problematic `HKCR\*\shellex\ContextMenuHandlers` key deletion.
This caused errors on both Windows 10 (22H2) and Windows 11 (23H2).
The wildcard usage made this operation potentially risky, so it's
replaced with more specific registry cleanup.
- Remove modifications to `HKCR` values. `HKCR` is a virtual hive,
and changes to `HKLM` are automatically reflected in `HKCR`.
- Update 'Disable automatic OneDrive installation' to target only
Windows 1909, improve documentation, and recommend in 'Standard'.
- Simplify 'Disable Diagnostics Hub log collection' by removing VS
version check, enhance documentation, recommend in 'Standard'.