WindowsCoreFile and folder access

LNK shortcut files

Shell Link files that record a target's path, volume serial, share name, MAC times, size and machine identifier; found in Recent folders and Jump Lists.

01Location

  • C:\Users\<user>\AppData\Roaming\Microsoft\Windows\Recent\*.lnk
  • C:\Users\<user>\AppData\Roaming\Microsoft\Office\Recent\*
  • Numbered streams inside *.automaticDestinations-ms Jump List files
  • Any *.lnk file (desktop, Start menu, removable media)

02Questions it answers

  • Which file or folder did the link point to, on which volume or network share?
  • Was the target on removable media (drive type, serial number, volume label)?
  • What were the target's timestamps and size as recorded in the link?
  • On which machine (machine identifier, droid identifiers) did the target reside?
  • Which command-line arguments and working directory does a shortcut pass to its target?

03Format and versions

Format[MS-SHLLINK] Shell Link Binary File Format: 76-byte ShellLinkHeader (class identifier 00021401-0000-0000-C000-000000000046), optional LinkTargetIDList (shell items), LinkInfo (volume or network location), StringData and ExtraData blocks. Little-endian; FILETIME in UTC; strings in UTF-16LE or a codepage.
Applies toWindows 95 to Windows 11; Microsoft maintains the specification (revision 10.0, 2025) and liblnk has been tested up to Windows 10.

04Key fields

FieldWhat it tells you
ShellLinkHeader timesCreationTime, AccessTime and WriteTime of the link target in UTC; 0 means not set.
FileSizeSize of the link target; for targets larger than 0xFFFFFFFF only the least significant 32 bits.
Volume informationDrive type, drive serial number and volume label (ASCII and/or UTF-16).
Local path / network share / common pathComponents from which the full target path is rebuilt.
Data stringsDescription, relative path, working directory, command-line arguments, icon location.
Distributed link tracker blockMachine identifier string, droid volume/file identifiers and birth droid identifiers (NTFS object IDs).

05Timestamps

FieldEncodingNote
CreationTime / AccessTime / WriteTimeFILETIME (UTC)Describe the link target as recorded in the file, not the moment the .lnk was opened.
Shell item times in LinkTargetIDListFAT date/time (UTC)Per-component times from the embedded shell items.

Decode raw values with the Timestamp decoder and convert local wall-clock times with the Local time to UTC.

06Examination workflow

  1. Collect LNK files from Recent, Office Recent, desktops, Start menu folders and Jump List streams.
  2. Parse the header, IDList, LinkInfo, string data and extra data blocks.
  3. Compare target times in the header with the .lnk file's own file system times.
  4. Use drive type, serial number and tracker identifiers to tie targets to volumes and hosts, then correlate with USB history and ShellBags.

07Interpretation pitfalls

  • Most structures are optional and controlled by data flags; ForceNoLinkTrack means no tracker block is present.
  • FileSize is truncated for targets larger than 4 GiB.
  • Some strings may contain unpaired UTF-16 surrogates; use parsers that tolerate them.

09Sources

  1. [MS-SHLLINK]: Shell Link (.LNK) Binary File Format Microsoft Open Specifications · checked 2026-10-14
  2. [MS-SHLLINK] 2.1 ShellLinkHeader Microsoft Open Specifications · checked 2026-10-14
  3. Windows Shortcut File (LNK) format libyal / liblnk (J. Metz) · checked 2026-10-14
  4. Jump lists format libyal / dtformats (J. Metz) · checked 2026-10-14
  5. Windows artifact definitions (windows.yaml) ForensicArtifacts / artifacts · checked 2026-10-14