Here is some code with which I tried to simplify the whole thing. This has worked so far also. I didn't have to add the DLL but I packaged the whole thing PVAD like into a path c:\SSMS. But it is possible that components are still missing. The gui starts first. Please use this only in a test environment or a VM
$MSIXFolder = "C:\Users\admin\Desktop\Forcelets-Tests\SCCMMSIXTest"
HiveTempName = 'TempHive'
& reg.exe load $('HKLM\' + $HiveTempName) (Join-Path $MSIXFolder -ChildPath "User.dat")
Start-Sleep -Seconds 2
#Change ACL
$everyone = New-Object System.Security.Principal.SecurityIdentifier 'S-1-1-0'
$acl = Get-Acl -Path $('HKLM:\' + $HiveTempName + '\Software')
$acType = [System.Security.AccessControl.AccessControlType]::Allow
$regRights = [System.Security.AccessControl.RegistryRights]::FullControl
$inhFlags = [System.Security.AccessControl.InheritanceFlags]::ContainerInherit
$prFlags = [System.Security.AccessControl.PropagationFlags]::None
$accessRule = New-Object System.Security.AccessControl.RegistryAccessRule ($everyone, $regRights, $inhFlags, $prFlags, $acType)
$acl.AddAccessRule($accessRule)
Set-Acl -Path $('HKLM:\' + $HiveTempName + '\Software') -AclObject $acl
reg.exe unload $('HKLM\' + $HiveTempName)