What's the difference between Amcache and AppCompatCache?
AppCompatCache (commonly called ShimCache) and Amcache are different Windows artefacts that both record PE binaries on a host. They are constantly confused because both live in the Application Compatibility infrastructure — but they are different mechanisms with different limits and very different forensic value.
The headline differences:
ShimCache is shorter, sparser, kernel-maintained, and updated by the loader. Amcache is longer, richer, user-mode-maintained, and updated by a scheduled task.
Side-by-side#
| Property | AppCompatCache (ShimCache) | Amcache |
|---|---|---|
| Storage | SYSTEM hive, single binary value |
Standalone Amcache.hve |
| Registry path | HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\AppCompatCache\AppCompatCache |
C:\Windows\AppCompat\Programs\Amcache.hve |
| Maintainer | Kernel loader | User-mode scheduled task (appraiser) |
| Max entries | 1024 (LRU eviction) | Effectively unbounded |
| Records hash? | No | Yes (SHA-1 of first 31 MiB) |
| Records publisher / version? | No | Yes |
Records ProgramId? |
No | Yes |
| Records driver / device data? | No | Yes (separate keys) |
| Persistence to disk | On shutdown | Continuous (with transaction logs) |
| Available freshly on live system? | No (need shutdown or memory) | Yes |
| Available pre-Windows 10 1709? | Yes (since Windows XP) | Partially (legacy schema only) |
| Default-on Server? | Yes | Yes (but slower cadence) |
For full coverage, see Amcache vs ShimCache.
When ShimCache wins#
- "Did the loader touch this binary?" ShimCache records loader touches; Amcache records appraiser-inventoried presence. They are different signals.
- Memory-only acquisitions. Volatility's
shimcachememplugin extracts ShimCache from RAM cleanly. - Pre-Windows-10 hosts. ShimCache has been there since Windows XP.
- Hardened hosts with the appraiser disabled. ShimCache is maintained by the kernel; it persists even when the appraiser is off.
When Amcache wins#
- Hash pivots. ShimCache has no hash; Amcache has SHA-1.
- Cross-host hunts. ShimCache has no
ProgramIdand no hash — cross-host pivots impossible. Amcache has both. - Driver / device evidence. ShimCache covers user-mode PE only. Amcache has dedicated driver and device schemas.
- Triage on a live system. Amcache is up-to-date on disk; ShimCache is stale until reboot.
When you should use both#
Always. The two artefacts corroborate each other:
- A binary in both → loader touched it AND the appraiser recorded it. Strong "this was present and used" finding.
- A binary in ShimCache only → loader touched it but the appraiser hasn't inventoried it yet, OR the file lived in a path the appraiser doesn't scan, OR the appraiser is disabled.
- A binary in Amcache only → present and inventoried but the loader hasn't touched it (in the current 1024 ShimCache window), OR ShimCache was wiped or rotated.
Both absent on a host where you'd expect a binary = strongest "this never happened" signal you'll get from these two artefacts. For execution proof, pair with Prefetch.
Related#
- Amcache complete reference
- Amcache vs ShimCache — the full comparison.
- ShimCache glossary.
- AppCompatCache parsing with Zimmerman's tool.
Related posts
- Amcache vs ShimCache: when each artefact wins
ShimCache and Amcache both record binaries that touched a Windows host. They are different mechanisms with different limits — here is when to use each, and what their overlap actually proves.
- Why is my Amcache.hve empty?
Three common causes: the Compatibility Appraiser is disabled, the host is freshly imaged, or you're collecting from a Server / Server Core where the appraiser runs much less often.
- Where is the Amcache registry key?
Amcache is its own hive file at C:\Windows\AppCompat\Programs\Amcache.hve — not a key under HKLM. When loaded by tools or by Windows itself it mounts as HKLM\Amcache.
- What does Amcache.hve contain?
Amcache.hve contains inventory records for every PE binary, driver, and connected device the Windows Compatibility Appraiser has seen — with SHA-1 hashes, paths, publishers, and timestamps.