HKCU ist kontextabhaengig
HKCU meint immer den aktuell geladenen Benutzerkontext. Aus SYSTEM heraus ist das etwas anderes als im interaktiven Benutzerkontext.
Detection
Per-user Detection scheitert oft nicht an PowerShell, sondern an falschen Annahmen ueber Kontext, Benutzerprofile und Sichtbarkeit von HKCU aus SYSTEM heraus.
HKCU meint immer den aktuell geladenen Benutzerkontext. Aus SYSTEM heraus ist das etwas anderes als im interaktiven Benutzerkontext.
Nicht jedes vorhandene Benutzerprofil ist gerade aktiv. Detection ueber Profildateien, NTUSER.DAT oder AppData braucht deshalb eine bewusste Strategie.
Wenn eine App fuer mehrere Benutzer auf demselben Geraet relevant ist, muss klar sein, ob Detection pro Benutzer oder ueber alle Profile aggregiert bewertet wird.
Per-User vs Per-Machine lesenEine per-user Detection ohne Uninstall-Strategie fuehrt spaeter zu halb entfernten Installationen und falschen Reoffers.
Uninstall in der Praxis lesen$profiles = Get-ChildItem 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList'
foreach ($profile in $profiles) {
$sid = Split-Path $profile.Name -Leaf
$installFlag = "Registry::HKEY_USERS\$sid\Software\Vendor\App"
if (Test-Path $installFlag) {
Write-Output "Gefunden fuer SID $sid"
}
}