Amcache 2026.10.0
dotnet add package Amcache --version 2026.10.0
NuGet\Install-Package Amcache -Version 2026.10.0
<PackageReference Include="Amcache" Version="2026.10.0" />
<PackageVersion Include="Amcache" Version="2026.10.0" />
<PackageReference Include="Amcache" />
paket add Amcache --version 2026.10.0
#r "nuget: Amcache, 2026.10.0"
#:package Amcache@2026.10.0
#addin nuget:?package=Amcache&version=2026.10.0
#tool nuget:?package=Amcache&version=2026.10.0
AmcacheParser
Command Line Interface
Description:
AmcacheParser version 2026.10.0
Author: Eric Zimmerman (saericzimmerman@gmail.com)
https://github.com/EricZimmerman/AmcacheParser
Examples: AmcacheParser.exe -f "C:\Temp\amcache\AmcacheWin10.hve" --csv C:\temp
AmcacheParser.exe -f "C:\Temp\amcache\AmcacheWin10.hve" -i --csv C:\temp --csvf foo.csv
AmcacheParser.exe -f "C:\Temp\amcache\AmcacheWin10.hve" -w "c:\temp\whitelist.txt" --csv C:\temp
AmcacheParser.exe -f "C:\Temp\Programs" -i --csv C:\temp (Amcache.hve and the Inventory*.db databases)
Short options (single letter) are prefixed with a single dash. Long commands are prefixed with two dashes
Usage:
AmcacheParser [options]
Options:
-f <f> Amcache.hve to parse (Windows 7 to 11), the folder it's in (C:\Windows\AppCompat\Programs), or one of the Inventory*.db SQLite databases there (Windows 11 26H1 and later). The databases next to a hive are read too
-i Include file entries for Programs entries
-w <w> Path to file containing SHA-1 hashes to *exclude* from the results. Blacklisting overrides whitelisting
-b <b> Path to file containing SHA-1 hashes to *include* from the results. Blacklisting overrides whitelisting
--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
--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]
--mp When true, display higher precision for timestamps
--nl When true, ignore transaction log files for dirty hives. Default is FALSE
--debug Show debug information during processing
--trace Show trace information during processing
-?, -h, --help Show help and usage information
--version Show version information
Documentation
This program is different from other Amcache parsers in that it does not dump everything available. Rather, it looks at both File entries and Program entries.
There are three kinds of Amcache data, and AmcacheParser reads each it finds (the console says which):
- Old format (Windows 7 and 8): Program entries are under
Root\Programsand File entries underRoot\Filein Amcache.hve. - New format (Windows 10 and 11):
Root\InventoryApplication,Root\InventoryApplicationFileand the otherRoot\Inventory*keys in Amcache.hve. A hive upgraded from Windows 8 can have old format entries too; they are written to the_OldFormatCSVs. - SQLite databases (Windows 11 26H1 and later):
Inventory*.dbnext to Amcache.hve (C:\Windows\AppCompat\Programs) hold what theRoot\Inventory*keys did. A row is read like the key of the same name (ItemKey), its columns like the key's values, andLastModifiedlike the key's last write time, so the same CSVs come out (_Databasesin their names), with every column the databases have. Every other database (InventoryInstaller, InventoryMiscellaneous, Mare, ...) gets a CSV with its columns as they are, and theMetadatatables of all of them one more.-fcan be Amcache.hve, the folder, or one of the databases. The databases are copied (with any-waland-journal) to a temporary folder and only the copies are opened, so nothing is written next to the evidence.
AmcacheParser gathers information about all the Program entries, then looks at all the File entries. In each file entry is a pointer to a Program ID (value 100). If this Program ID exists in Program entries, the File entry is associated with the Program entry.
At the end of this process you are left with things that didn't come from some kind of installed application.
Using the minimum options, AmcacheParser will only export Unassociated file entries.
If you use the -i option, AmcacheParser will export a Programs entry list and its associated File entry list.
With whitelisting and blacklisting you can further reduce the output by excluding certain File entries (whitelisting) or including only File entries whose SHA-1 is found in a blacklist file.
Note that AmcacheParser strips the extra 0s from the front of the SHA-1 value, so you can use the SHA-1s as shown in the output files for generating whitelists or blacklists.
AmcacheParser returns exit code 0 on success and 1 for bad arguments, a hive or database that could not be read (for example a dirty hive without its transaction logs, unless --nl is used), or no Amcache data.
Registry Explorer and RECmd 1.2.0.0 released!
(Am)cache still rules everything around me (part 2 of 1)
AmcacheParser: Reducing the noise, finding the signal
Everything gets an update, Sept 2018 edition
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
- CsvHelper (>= 33.1.0)
- ERZHelpers (>= 2026.5.3)
- Microsoft.Data.Sqlite (>= 10.0.13)
- 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.