1.0.0
This is the initial release of LANCommander Interposer: a Windows API hook DLL that makes games easier to run in shared, managed, and portable environments without modifying the game itself.
DownloadFeatures
Registry Emulation
Games that write configuration or save state to the Windows registry can be redirected to a plain text .reg file inside the game directory instead. Registry access to any key listed in .interposer\Registry.reg is served entirely from an in-memory store; keys not in the file pass through to the real registry unchanged. Writes are persisted back to the file automatically.
17 advapi32.dll functions are intercepted, including RegOpenKeyEx, RegQueryValueEx, RegSetValueEx, RegDeleteKey, RegEnumKeyEx, and RegCloseKey (W and A variants throughout).
File Redirection
File open calls (CreateFileW/A) and attribute queries (GetFileAttributesW/A) can be redirected using ECMAScript regex rules. Rules are defined in .interposer\Config.yml as pattern/replacement pairs. The first matching rule wins; environment variables in the replacement string are expanded after capture-group substitution.
FastDL
Game content that is missing or out of date is downloaded transparently from an HTTP server before the game opens the file. When a configured path prefix is matched, the hook sends a HEAD request to the FastDL server; if the file is available, it is fetched via GET and written to an overlay directory. The game receives a handle to the downloaded file with no changes required on the game side.
CRC32 freshness checking is supported via the X-Checksum-CRC32 response header — files already cached locally with a matching checksum are not re-downloaded. Sensitive interposer and game files are blocked from being overwritten by default.
Borderless Fullscreen
Games that create bordered or exclusive-fullscreen windows can be converted to borderless fullscreen automatically. When the game creates a top-level window, border style bits are stripped and the window is centered on its monitor. Subsequent attempts by the game to re-apply border styles or reposition the window are silently discarded.
This feature is opt-in via Window.Borderless: true in the config.
Player Identity
GetUserNameW/A and GetComputerNameW/A can be overridden to return a configured name instead of the real Windows account and machine names. Both values can be set in Config.yml or passed at launch time via the --username and --computername injector flags without editing the config. Hooks are only installed when a value is configured — both APIs pass through unchanged when the config is empty.
Logging
All hooked subsystems write to a timestamped session log at .interposer\Logs\YYYY-MM-DD_HH-MM-SS.log. File I/O, registry access, file redirects, FastDL downloads, and overlay cache hits are each logged with a distinct verb. Logging per subsystem is individually toggleable in the config. Early startup failures are always written to %TEMP%\interposer_diag.log regardless of config state.
Distribution
Three deployment variants are included, each for both x64 and x86:
| Variant | File | Use when |
|---|---|---|
| Standard | LANCommander.Interposer.dll + LANCommander.Interposer.Injector.exe | You control how the DLL is loaded (injector CLI, LANCommander client, custom launcher) |
| Proxy | version.dll | You want Windows to load the DLL automatically — drop it next to the game executable |
| ASI | LANCommander.Interposer.asi | The game already has an ASI loader installed |
Each variant is also packaged as an .lcx file for direct import into LANCommander as a redistributable. The LCX packages include install and name-change scripts that configure the .interposer\ directory and keep the player username in sync with the LANCommander player alias.