The Windows UserAssist
Key

UserAssist is a registry log of the graphical programs you've launched — how many times, and when you last ran them. Windows stores it obfuscated with ROT13, a trivial letter-shift cipher. The most important thing about it: the record survives uninstalling the program. This page explains what it is, where it lives, and how to decode yours.

What is UserAssist?

UserAssist is a Windows feature that quietly tracks the GUI programs and shortcuts you launch [anything you double-click or start from the Start menu or desktop — as opposed to commands typed into a console]. Its original purpose was mundane: help Windows surface your most-used apps in Start and search. But as a side effect it keeps a running per-user history of program execution.

For each program it records a run count, a last-execution timestamp, and a focus time [roughly how long the app sat in the foreground while you used it]. Because it's tied to the Windows Explorer shell, it captures desktop and Start-menu launches — but not programs started from the Run box or a terminal.

Where it lives

The data sits in the current-user registry hive [HKCU — your own account's settings, readable without administrator rights], split across two GUID-named subkeys:

Registry Path
HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\UserAssist\{GUID}\Count
Executables GUID
{CEBFF5CD-ACE2-4F4F-9178-9926F41749EA} — programs run
Shortcuts GUID
{F4E57C4B-2036-45F0-A9AB-443BCFE33D9F} — .lnk shortcuts run
Encoding
ROT13 — weak letter-substitution (e.g. Rundll32.exe is stored as ehaqyy32.rkr)
Data captured
Run count, last-execution time, focus time
Requires admin?
No — it lives in your own user hive
Survives uninstall?
Yes — the log entry remains after the program is gone

How to decode yours

Open PowerShell and paste the block below. It reads both UserAssist GUID subkeys, un-scrambles the ROT13 value names, and prints the readable list of programs your account has launched [a read-only lookup — it changes nothing on your system]:

powershell — read-only
# UserAssist decoder — reveals the GUI programs you've launched (read-only, no admin)
$base = "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\UserAssist";
function Rot13($s){ -join ($s.ToCharArray() | ForEach-Object { $c=[int]$_; if($c -ge 65 -and $c -le 90){[char]((($c-65+13)%26)+65)} elseif($c -ge 97 -and $c -le 122){[char]((($c-97+13)%26)+97)} else{$_} }) };
Get-ChildItem $base | ForEach-Object { $k = Join-Path $_.PSPath "Count"; if(Test-Path $k){ (Get-Item $k).GetValueNames() | Where-Object { $_ } | ForEach-Object { Rot13 $_ } } } | Sort-Object -Unique

Decoded entries look like UEME_RUNPATH:C:\...\program.exe. The UEME_RUNPATH prefix marks a program that was executed; you may also see session and shortcut entries. On some systems tracking is disabled or the key is sparse — an empty result simply means little or nothing was logged for your account.

Why it matters

UserAssist is a quiet, honest witness. Uninstalling a program removes its files — but not this log. The ROT13 record of "you ran X, this many times, last on this date" lingers in the registry after the application itself is long gone. That's exactly why it's a staple of forensic examinations.

What the record reveals In documented forensic cases, UserAssist has shown that a program was executed multiple times on a user's profile — with exact run counts and timestamps — even after the person uninstalled it and denied ever using it. The application was gone; the decoded log wasn't. If it ran from the Windows shell, UserAssist most likely remembers.

How to reduce your exposure

This is standard, legitimate privacy hygiene [tidying up traces on your own machine — not evading anything]:

See your UserAssist log — and everything else Windows keeps on you

Blacklight surfaces your execution history, identifiers, network usage, and every privacy toggle on one local screen. Open source, runs 100% locally.

Star on GitHub