Execution
RecentFileCache.bcf
RecentFileCache.bcf cheat sheet: the Windows 7 execution artifact that lists recently run executables, its location, format, limits and how to parse it.
- Location
- C:\Windows\AppCompat\Programs\RecentFileCache.bcf
- Proves
- Executables recently launched on a Windows 7 / Server 2008 R2 host
- Timestamps
- No timestamps inside the file; only the .bcf $SI modification time (NTFS, UTC) of the last update
- Retention
- Short window: periodically emptied by the ProgramDataUpdater inventory task; older contents only in VSS copies
- Access
- Administrator; copy with robocopy from C:\Windows\AppCompat\Programs (KAPE RecentFileCache)
- Evidence of
- Execution
- Type
- File / file system
- Windows
- Vista / 7
- KAPE target
- RecentFileCache
- Velociraptor
- Windows.Triage.Targets:RecentFileCache
Tools
Compare all toolsWhat it is
RecentFileCache.bcf is a small binary file maintained by the Application Experience service on Windows 7 and Windows Server 2008 R2. It lists the full paths of executables that were recently started, so the compatibility inventory can later examine them. It is the predecessor of Amcache.hve, which replaced it from Windows 8 onwards.
Location
| Windows version | Path |
|---|---|
| 7 / Server 2008 R2 | C:\Windows\AppCompat\Programs\RecentFileCache.bcf |
| 8 and later | Not used (Amcache.hve instead) |
On Windows 7 systems that received the compatibility updates bringing Amcache, both files can exist side by side.
What it proves
- An executable at the listed path was launched recently, that is, since the cache was last processed.
- It is valuable for programs run from removable media or temporary folders, which it records with their full path.
- It does not contain timestamps, run counts or user information.
Key fields
| Field | Meaning |
|---|---|
| Header | Signature and format information |
| Entry length | Length of the following path in characters |
| Path | Full UTF-16 path of the executable (lower-case in practice) |
That is the whole record: a list of paths.
Timestamps
| Timestamp | Set when | Format | Pitfalls |
|---|---|---|---|
| None inside the file | — | — | Entries carry no time of their own |
| File $SI modification time | Last update of the cache | NTFS, UTC | Only brackets the most recent write; use the $MFT and the USN journal for the history of writes |
Retention and clearing
- The cache is periodically emptied when the Application Experience inventory task (ProgramDataUpdater) processes it, so it usually covers a short window of recent executions.
- Because of this short window, it is best at catching activity shortly before acquisition; older entries may survive in shadow copies of the file.
Collection
- KAPE target:
RecentFileCache - Velociraptor (
Windows.Triage.Targets):RecentFileCache - Built-in:
robocopy C:\Windows\AppCompat\Programs E:\case\AppCompat RecentFileCache.bcf /COPY:DAT
Parsing tools
- RecentFileCacheParser (Eric Zimmerman):
RecentFileCacheParser.exe -f RecentFileCache.bcf --csv E:\out. - rfc.pl (Perl script by Corey Harrell): prints the list of paths.
- A hex editor is enough for a quick look: the paths are plain UTF-16.
Investigation tips
- Every path is a lead: look for executables in
\Users\<user>\AppData\Local\Temp\,\Users\Public\, removable-drive letters and network paths. - Take each path to the $MFT, ShimCache and Prefetch to add timestamps and confirm execution.
- If the binary still exists, triage it as a PE file (hash, signature, compile time).
- On a Windows 7 host that also has Amcache, compare both lists: an executable present in one but not the other narrows down when it ran.
Related artifacts
- Amcache.hveAmcache.hve cheat sheet: file and program inventory keys, SHA-1 hashes, PE metadata, timestamps and why an entry alone does not prove execution.
- ShimCache (AppCompatCache)ShimCache (AppCompatCache) cheat sheet: SYSTEM hive location, entry limits per Windows version, ordering, timestamp meaning and execution caveats.
- Prefetch Files (.pf)Windows Prefetch cheat sheet: .pf location per version, run count, the last eight run times, referenced files, retention limits and how to parse.
- PE files (Windows executables)PE file triage cheat sheet: hashes, imphash and Rich header, compile timestamp caveats, sections and entropy, version info, signatures, PDB paths and tools.
Glossary terms
- Evidence of executionArtifacts that show a program actually ran on a Windows system, as opposed to merely existing on disk, and how strongly each one supports that claim.
- FILETIMEThe 64-bit Windows timestamp format counting 100-nanosecond intervals since 1 January 1601 UTC, used by NTFS, the registry and many artifacts.
- MFT file reference numberThe 64-bit NTFS identifier of a file: a 48-bit MFT entry number plus a 16-bit sequence number that changes each time the entry is reused.