Gotchas

Where OriginalFilename detections break, measured on 1,043 binaries.

1. Explorer and PowerShell show you the wrong value

The file Properties dialog, (Get-Item x).VersionInfo and .NET FileVersionInfo load the localized MUI copy of the version resource. Sysmon and EDR sensors read the binary's own resource. If you copy the value from Explorer into a rule, the rule never fires.

BinaryExplorer / .NET VersionInfoWhat Sysmon logs
cmd.exeCmd.Exe.MUICmd.Exe
powershell.exePowerShell.EXE.MUIPowerShell.EXE
rundll32.exeRUNDLL32.EXE.MUIRUNDLL32.EXE
certutil.exeCertUtil.exe.muiCertUtil.exe

Every value in this library comes from parsing RT_VERSION straight out of the PE bytes, never from those APIs.

2. Some executables report a DLL name

An .exe process can log an OriginalFilename ending in .dll. One cause is the .NET (Core) apphost: a small native launcher, name.exe, that loads name.dll and carries a copy of the DLL's version resource, so pwsh.exe logs pwsh.dll. Most of the others are ordinary native Windows binaries whose version resource simply names a DLL, such as w32tm.exe →w32time.dll. Either way, a rule that expects an .exe value misses them.

3. The value changes between builds

A single value per binary is the common case, but not universal. These 11 binaries changed OriginalFilename, or its casing, between Windows releases or architectures. A rule listing one value silently misses the other builds.

4. Some binaries have no OriginalFilename at all

Either the version resource is missing, or it has no OriginalFilename key, or the key is empty (pcalua.exe). Sysmon logs - for all three. OriginalFileName rules can't see these binaries; use the image path, hash or signer.

5. The value often isn't the file name

178 binaries carry an OriginalFilename that differs from their file name (ignoring case), so OriginalFileName: <file name> never matches. Most-referenced in Sigma first:

File nameOriginalFilename
systeminfo.exesysinfo.exe
wermgr.exeWerMgr
scrcons.exeScrCons
adexplorer.exeAdExp
adexplorer64.exeAdExp
livekd64.exelivekd.exe
procdump.exeprocdump
procdump64.exeprocdump
procexp64.exeProcexp.exe
psexec.exepsexec.c
bginfo64.exeBGInfo.exe
psexec64.exepsexec.c
vmmap.exeVmmap
vmmap64.exeVmmap
accesschk64.exeaccesschk.exe
dotnet.exe.NET Host
driverquery.exedrvqry.exe
handle.exeNthandle.exe
handle64.exeNthandle.exe
imagingdevices.exeImagingDevices.cpl
procmon.exeProcess Monitor
procmon64.exeProcess Monitor
provlaunch.exeprovlaunch
psloglist64.exepsloglist.exe
pspasswd64.exepspasswd.exe
sdelete64.exesdelete.exe
wlrmdr.exeWLRMNDR.EXE
adinsight.exeADInsight
adinsight64.exeADInsight
adrestore.exeadrestore
adrestore64.exeadrestore
audiodg.exeaudioadg.exe
autologon.exeAutolog.exe
autologon64.exeAutolog.exe
autoruns64.exeautoruns.exe
autorunsc.exeautoruns.exe
autorunsc64.exeautoruns.exe
cacheset.exeCacheset
cacheset64.exeCacheset
clockres.exeClockres

The library's "Differs from file name" filter shows the full list.

6. Case sensitivity depends on the backend

BackendCase-insensitiveCase-sensitive
Sigmadefault string matching|cased modifier
Splunkfield=value in search, INwhere / eval comparisons, CSV lookups by default
Defender KQL=~, in~==, in
ElasticEQL :, in~Kibana KQL on keyword fields, EQL ==
Cribl Streamlowercase both sidesJavaScript ===

The snippets on every page use the case-insensitive form, and exports are lowercased where they feed lookups.

7. OriginalFilename is attacker-controlled

It survives renaming, which is why it's useful, but it's just a string in a resource section. Anyone can set it on their own tool, or edit it on a copied binary. Easier still, they can strip the version resource and leave nothing to match: the process then logs -, exactly like the 46 binaries above that simply ship without one. Spoofing a value is the loud option; removing it is the quiet one.

Editing a signed binary breaks its signature: Authenticode hashes the resources, and catalog-signed Windows files stop matching their catalog hash. So pair OriginalFileName with signature status and signer — and know which half is doing the work. A renamed but unmodified signed binary keeps a valid signature and its real signer, so only OriginalFileName catches it; a forged value breaks the signature, so only the signature catches that. Each check covers the other's blind spot.

Neither sensor hands you both in one record. Sysmon's process creation event (ID 1) carries no signature fields at all — signature data is on driver load (6) and image load (7). Defender XDR's DeviceProcessEvents gives you ProcessVersionInfoOriginalFileName for the created process, but its signature columns, InitiatingProcessSignatureStatus and InitiatingProcessSignerType, describe the initiating process; for the created one, join SHA1 to DeviceFileCertificateInfo.

8. One file name, different binaries

Generic names like setup.exe cover unrelated binaries that happen to share a name. Check the path and signer before trusting a lookup on the name alone.

9. Sigma literals this database can't vouch for

SigmaHQ (r2026-07-01) rules match 74 OriginalFileName literals that no binary here is named and no parsed build carries. Each one is either a binary this library hasn't collected yet (DLLs loaded by image_load rules, third-party tools) — or a rule arm that can never fire. Until the binary is parsed, the value is an unverified claim.