Public/Add-MSIXPSFDefaultRegLegacy.ps1

function Add-MSIXPSFDefaultRegLegacy {
<#
.SYNOPSIS
    Adds a standard RegLegacyFixups configuration to an MSIX package.

.DESCRIPTION
    Applies a comprehensive default RegLegacyFixups rule set by calling
    Add-MSIXPSFRegLegacyFixup with the following configuration:

    ModifyKeyAccess HKCU Full2MaxAllowed — full access -> MAXIMUM_ALLOWED
    ModifyKeyAccess HKCU RW2MaxAllowed — read/write -> MAXIMUM_ALLOWED
    ModifyKeyAccess HKLM Full2R — full access -> read-only
    ModifyKeyAccess HKLM RW2R — read/write -> read-only
    FakeDelete HKCU — suppress ACCESS_DENIED on key deletions

    All five rules are compatible with both Microsoft PSF and Tim Mangan PSF.

.PARAMETER MSIXFolder
    Path to the expanded MSIX package folder (must contain config.json.xml).

.PARAMETER Executable
    Regex pattern for the process entry. Default: ".*" (all processes).

.PARAMETER AllowRedirectHKLMWrites
    When set, also adds an HKLM2HKCU rule that redirects HKLM writes to virtual
    HKCU. Requires Tim Mangan PSF — the call will error if Microsoft PSF is active.

.EXAMPLE
    Add-MSIXPSFDefaultRegLegacy -MSIXFolder "C:\MSIXTemp\MyApp"

.EXAMPLE
    Add-MSIXPSFDefaultRegLegacy -MSIXFolder "C:\MSIXTemp\MyApp" -AllowRedirectHKLMWrites

.NOTES
    Microsoft PSF: https://github.com/microsoft/MSIX-PackageSupportFramework/tree/main/fixups/RegLegacyFixups
    Tim Mangan PSF: https://github.com/TimMangan/MSIX-PackageSupportFramework/wiki/Fixup:-RegLegacyFixup
    https://www.nick-it.de
    Andreas Nick, 2026
#>

    [CmdletBinding()]
    param(
        [Parameter(Mandatory = $true, ValueFromPipeline = $true, Position = 0)]
        [System.IO.DirectoryInfo] $MSIXFolder,

        [String] $Executable = '.*',

        [Switch] $AllowRedirectHKLMWrites
    )

    process {
        Add-MSIXPSFRegLegacyFixup -MSIXFolder $MSIXFolder -Executable $Executable `
            -ModifyKeyAccess -Hive HKCU -Patterns @('.*') -Access Full2MaxAllowed

        Add-MSIXPSFRegLegacyFixup -MSIXFolder $MSIXFolder -Executable $Executable `
            -ModifyKeyAccess -Hive HKCU -Patterns @('.*') -Access RW2MaxAllowed

        Add-MSIXPSFRegLegacyFixup -MSIXFolder $MSIXFolder -Executable $Executable `
            -ModifyKeyAccess -Hive HKLM -Patterns @('.*') -Access Full2R

        Add-MSIXPSFRegLegacyFixup -MSIXFolder $MSIXFolder -Executable $Executable `
            -ModifyKeyAccess -Hive HKLM -Patterns @('.*') -Access RW2R

        Add-MSIXPSFRegLegacyFixup -MSIXFolder $MSIXFolder -Executable $Executable `
            -FakeDelete -Hive HKCU -Patterns @('.*')

        if ($AllowRedirectHKLMWrites) {
            Add-MSIXPSFRegLegacyFixup -MSIXFolder $MSIXFolder -Executable $Executable `
                -HKLM2HKCU -Hive HKLM
        }
    }
}