Detection

Detection fuer HKCU und Benutzerprofile ohne Blindflug bauen.

Per-user Detection scheitert oft nicht an PowerShell, sondern an falschen Annahmen ueber Kontext, Benutzerprofile und Sichtbarkeit von HKCU aus SYSTEM heraus.

HKCU ist kontextabhaengig

HKCU meint immer den aktuell geladenen Benutzerkontext. Aus SYSTEM heraus ist das etwas anderes als im interaktiven Benutzerkontext.

Profile sind nicht immer geladen

Nicht jedes vorhandene Benutzerprofil ist gerade aktiv. Detection ueber Profildateien, NTUSER.DAT oder AppData braucht deshalb eine bewusste Strategie.

Mehrbenutzerfaelle zuerst planen

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 lesen

Uninstall mitdenken

Eine per-user Detection ohne Uninstall-Strategie fuehrt spaeter zu halb entfernten Installationen und falschen Reoffers.

Uninstall in der Praxis lesen
PowerShell
$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"
  }
}