Powershell comes with a kind of FUSE mount for the registry:
PS C:\> Set-Location HKCU: PS HKCU:\> Get-ChildItem -Recurse | where-object { $_.Name -match "HeidiSQL" }
cd HKCU: ls -r -i *HeidiSQL*
ls -r | ? {$_.Name -match "HeidiSQL"}
PS C:\> cd hkcu: PS HKCU:\> ls -r | ? name -m 'HeidiSQL'