Skip to content

Execution

MUICache

MUICache cheat sheet: UsrClass.dat and NTUSER.DAT locations, FriendlyAppName and ApplicationCompany values, what they prove and their timestamp limits.

Location
UsrClass.dat\Local Settings\Software\Microsoft\Windows\Shell\MuiCache
Proves
A user's shell resolved an executable's display name, usually because it ran
Timestamps
Only the MuiCache key LastWrite as FILETIME, UTC; individual entries carry no time
Retention
Entries accumulate for the life of the profile with no documented limit and survive deletion of the executable
Access
UsrClass.dat locked while the user is logged on: reg query works live, otherwise raw NTFS (KAPE) or VSS
Evidence of
Execution
Type
Registry
Windows
XPVista / 78 / 8.11011
KAPE target
RegistryHivesUser
Velociraptor
Windows.Triage.Targets:RegistryHivesUser

What it is

The MUI (Multilingual User Interface) cache stores the display name of executables so the shell does not have to read each file's version resources again. When a program is started through the shell, Windows reads its FileDescription (and, on newer versions, CompanyName) and caches it in the user's registry. The result is a per-user list of executables with their friendly names, which often survives after the program has been deleted.

Location

Windows versionHiveKey
XPNTUSER.DATSoftware\Microsoft\Windows\ShellNoRoam\MUICache
Vista / 7 / 8 / 10 / 11UsrClass.datLocal Settings\Software\Microsoft\Windows\Shell\MuiCache

On a live system the Vista+ key is visible as HKCU\Software\Classes\Local Settings\Software\Microsoft\Windows\Shell\MuiCache.

What it proves

  • The user whose hive holds the key had the shell load display information for the executable. In practice this happens mostly when the program is executed, so MUICache is commonly used as supporting evidence of execution attributed to a user.
  • It keeps the full path, which exposes tools run from USB drives, temp folders or network shares.
  • It is not conclusive on its own: other shell operations that need the display name can also create entries, and it records no count or time per entry.

Key fields

Value nameData
<full path>.FriendlyAppNameFileDescription from the PE version resource (Windows 7 and later)
<full path>.ApplicationCompanyCompanyName from the PE version resource (Windows 7 and later)
<full path>Friendly name (XP / Vista style)
LangIDLanguage bookkeeping value, not a program

Timestamps

TimestampSet whenFormatPitfalls
MuiCache key LastWriteAny value is added or changedFILETIME, UTCOnly dates the most recent addition; individual entries have no time

Retention and clearing

  • Entries accumulate for the life of the profile; there is no documented size limit.
  • Some cleaners delete the key. Deleted values can remain recoverable from free space in the hive, and older copies exist in shadow copies of UsrClass.dat.
  • Renaming or deleting the executable does not remove its entry, so MUICache can preserve names of tools that are long gone.

Collection

  • KAPE target: RegistryHivesUser (collects UsrClass.dat and NTUSER.DAT with logs)
  • Velociraptor (Windows.Triage.Targets): RegistryHivesUser
  • Built-in (current user):
reg query "HKCU\Software\Classes\Local Settings\Software\Microsoft\Windows\Shell\MuiCache"

Parsing tools

  • Registry Explorer / RECmd (Eric Zimmerman): browse or batch-export the key.
  • RegRipper: muicache plugin.
  • ExecutedProgramsList (NirSoft): combines MUICache with other execution sources on a live system.

Investigation tips

  • The friendly name is read from the file itself: a binary named svchost.exe with a FriendlyAppName of an archiver or a remote-access tool reveals renaming.
  • An empty or odd ApplicationCompany next to a system-looking name is a quick triage flag.
  • Build a per-user list of unusual paths, then confirm execution and time with UserAssist, BAM/DAM or Prefetch.
  • If the binary is gone, pivot to Amcache (SHA-1) and ShimCache using the same path.

Related artifacts

Glossary terms

Guides

All artifacts on one page: cheat sheet