AppCompatCache 2026.10.1
See the version list below for details.
dotnet add package AppCompatCache --version 2026.10.1
NuGet\Install-Package AppCompatCache -Version 2026.10.1
<PackageReference Include="AppCompatCache" Version="2026.10.1" />
<PackageVersion Include="AppCompatCache" Version="2026.10.1" />
<PackageReference Include="AppCompatCache" />
paket add AppCompatCache --version 2026.10.1
#r "nuget: AppCompatCache, 2026.10.1"
#:package AppCompatCache@2026.10.1
#addin nuget:?package=AppCompatCache&version=2026.10.1
#tool nuget:?package=AppCompatCache&version=2026.10.1
AppCompatCacheParser
Command Line Interface
Description:
AppCompatCache Parser version 2026.10.0
Author: Eric Zimmerman (saericzimmerman@gmail.com)
https://github.com/EricZimmerman/AppCompatCacheParser
Usage:
AppCompatCacheParser [options]
Options:
-f <f> Full path to SYSTEM hive to process. If this option is not specified, the live Registry will be used
--csv <csv> Directory to save CSV formatted results to. Be sure to include the full path in double quotes
--csvf <csvf> File name to save CSV formatted results to. When present, overrides default name
-c <c> The ControlSet to parse. Default is to extract all control sets [default: -1]
-t Sorts last modified timestamps in descending order
--dt <dt> The custom date/time format to use when displaying time stamps. See https://goo.gl/CNVq0k for options [default: yyyy-MM-dd HH:mm:ss]
--nl When true, ignore transaction log files for dirty hives
--debug Show debug information during processing
--trace Show trace information during processing
-?, -h, --help Show help and usage information
--version Show version information
Examples: AppCompatCacheParser.exe --csv c:\temp -t -c 2
AppCompatCacheParser.exe --csv c:\temp --csvf results.csv
Short options (single letter) are prefixed with a single dash. Long commands are prefixed with two dashes
AppCompatCacheParser exits with 0 when the hive was processed, and 1 for bad arguments, a hive that can't be read (or is dirty without its transaction logs, unless --nl is given), no cache found, or a CSV that can't be written.
Output
| Column | |
|---|---|
| ControlSet | The ControlSet00x the cache is in |
| CacheEntryPosition | The entry's place in the cache, most recently added or updated first (Windows XP: in the order of its LRU list) |
| Path | The file's path. Packaged (UWP) app entries on Windows 10 and 11 have tab separated fields here instead, and no time |
| LastModifiedTimeUTC | The file's last modified time ($STANDARD_INFORMATION) when it was added to the cache |
| Executed | Windows 10/11: the entry's data has tag 0x100. Windows 7, 8.x and 64 bit Vista/2008: insertion flag 0x2. NA where the format has neither |
| Duplicate | The same path and time is already in an earlier row (another control set, for example) |
| SourceFile | The hive |
| FromSlack | Recovered from the slack of the value's cell: no longer in the cache (Windows 8 to 11; only entries that are not in it) |
Library
The AppCompatCache NuGet package parses the value from a hive, or the raw value:
var acc = new AppCompatCache.AppCompatCache(@"C:\Temp\SYSTEM", -1, false); //all control sets, replaying transaction logs
foreach (var cache in acc.Caches)
{
foreach (var e in cache.Entries.Concat(cache.SlackEntries))
{
Console.WriteLine($"{e.ControlSet} {e.CacheEntryPosition} {e.Path} {e.LastModifiedTimeUTC} {e.Executed}");
}
foreach (var error in cache.ParseErrors) //entries that could not be read
{
Console.WriteLine(error);
}
}
var fromValue = new AppCompatCache.AppCompatCache(File.ReadAllBytes("AppCompatCache.bin"), 1, false);
- A value that is too small or not a known format throws
AppCompatCacheParseException. A damaged entry is listed inParseErrors, and the entries before it (or, for the fixed size formats of Windows XP to 7, the others) are still returned. - Windows 10/11 entry data is a list of (tag, size, value) records:
Windows10.DataTags(entry.Data).
Documentation
AppCompatCache (ShimCache) parser. Supports Windows XP, Windows Server 2003, Vista and 2008, Windows 7 (x86 and x64), Windows 8.x, Windows 10, and Windows 11.
Introducing AppCompatCacheParser
AppCompatCacheParser v0.0.5.1 released
AppCompatCacheParser v0.0.5.2 released
AppCompatCacheParser v0.9.0.0 released and some AppCompatCache/shimcache parser testing
Windows 10 Creators update vs shimcache parsers: Fight!!
Everything gets an update, Sept 2018 edition
Windows Registry Knowledge Base
Download Eric Zimmerman's Tools
All of Eric Zimmerman's tools can be downloaded here.
Special Thanks
Open Source Development funding and support provided by the following contributors: SANS Institute and SANS DFIR.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
| .NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
| .NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
| .NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
| MonoAndroid | monoandroid was computed. |
| MonoMac | monomac was computed. |
| MonoTouch | monotouch was computed. |
| Tizen | tizen40 was computed. tizen60 was computed. |
| Xamarin.iOS | xamarinios was computed. |
| Xamarin.Mac | xamarinmac was computed. |
| Xamarin.TVOS | xamarintvos was computed. |
| Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.0
- AlphaFS.New (>= 2.3.0)
- ERZHelpers (>= 2026.5.3)
- Registry (>= 2026.10.0)
- Serilog (>= 4.4.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.