How to Install ReHLDS on Windows Server

July 23, 2025 Daemon666 8 min read 22 views

On Windows the Half-Life engine lives in swds.dll, not engine_i486.so. ReHLDS ships a Windows build of that DLL, so installing it is a file swap — but the failure modes are different from Linux, mostly because of antivirus software and because Windows will happily load a stale DLL from the wrong directory without telling you.

1. Prerequisites

  • A working App 90 install that already boots to a map. If you do not have one, follow the Windows install guide first.
  • The Microsoft Visual C++ redistributables. ReHLDS is built with MSVC; on a bare Windows Server image the redistributable is frequently missing and the DLL will simply refuse to load.
  • An antivirus exclusion for the server folder. Defender has flagged Metamod and AMXX DLLs as trojans on and off for years. It is a false positive, but a quarantined DLL looks exactly like a broken install.

2. Download the release

Take the latest ReHLDS release archive from the project's GitHub releases page. Inside, the Windows build contains:

swds.dll
hlds.exe     (ReHLDS' own launcher; optional but recommended)

Make sure you took the Windows directory of the archive. Copying a Linux engine_i486.so onto Windows does nothing at all — the file is simply ignored, the Valve engine keeps running, and you will swear the install "did not work".

3. Stop the server, back up, replace

Shut the server down completely. Windows locks a loaded DLL; overwriting swds.dll while hlds.exe is running fails with Access is denied — and if you force it, you will replace it with a half-written file.

cd /d C:\hlds
copy swds.dll swds.dll.valve.bak
copy /Y C:\downloads\rehlds\swds.dll  C:\hlds\swds.dll
copy /Y C:\downloads\rehlds\hlds.exe  C:\hlds\hlds.exe

Both files belong in the server root — the folder containing hlds.exe and the cstrike\ directory. Not inside cstrike\.

4. Start and confirm

cd /d C:\hlds
hlds.exe -console -game cstrike -port 27015 +map de_dust2 +maxplayers 20 +sv_lan 0

In the console:

rehlds_version

Stock HLDS replies Unknown command: rehlds_version. ReHLDS prints its version. That is the only verification that means anything — file dates and folder contents can lie, the cvar cannot.

5. ReHLDS cvars on Windows

Identical to Linux; add them to cstrike\server.cfg:

sv_rehlds_local_gametime 1
sv_rehlds_force_dlmax 1
sv_rehlds_send_mapcycle 0
sv_filterban 1
sv_rcon_maxfailures 5
sv_rcon_minfailures 5
sv_rcon_minfailuretime 30

There is one platform difference that matters: Windows HLDS cannot hit the same server FPS as Linux at the same CPU cost, and sys_ticrate behaves differently under the Windows timer. Do not expect 500 FPS out of a Windows box; 100–200 is the realistic range.

6. The rest of the stack

On Windows the file names change but the order does not:

  1. ReHLDS → swds.dll
  2. ReGameDLL_CScstrike\dlls\mp.dll
  3. Metamod-rcstrike\addons\metamod\metamod.dll, referenced from liblist.gam
  4. AMX Mod Xcstrike\addons\amxmodx\dlls\amxmodx_mm.dll, listed in metamod\plugins.ini

In plugins.ini, Windows lines start with win32 and Linux lines with linux. A file copied from a Linux server will list .so paths and every plugin will fail. See plugins.ini explained. There is also a combined walkthrough: full ReHLDS + Metamod-r + AMXX on Windows.

Common errors

  • Console flashes and closes — run it from cmd.exe with a pause at the end of your batch file so you can read the last line.
  • The application was unable to start correctly (0xc000007b) — you mixed a 64-bit DLL into a 32-bit process. Everything in a CS 1.6 server is 32-bit; there is no 64-bit build.
  • The program can't start because MSVCP140.dll is missing — install the Visual C++ redistributable (x86, not x64).
  • rehlds_version is unknown after the swap — either the DLL was quarantined by antivirus (check the quarantine list), or you copied it next to a different hlds.exe than the one you are launching. Confirm the running path in Task Manager → Details → right-click → Open file location.
  • Access is denied copying swds.dll — the server is still running. Kill hlds.exe in Task Manager first.

Rollback

cd /d C:\hlds
copy /Y swds.dll.valve.bak swds.dll

Restart and check rehlds_version is unknown again. Alternatively re-run app_update 90 validate in SteamCMD, which restores every stock file it manages — including swds.dll, and including anything else you had replaced, so do not reach for validate casually once you have a customised install.

Verification

  1. rehlds_version prints a version.
  2. status shows the map and slot count.
  3. A client can connect YOUR_IP:27015 and spawn.
  4. If Metamod is installed, meta list shows every plugin as RUN, none as bad load.

All four green means the engine swap is done and the rest of the stack is safe to layer on top.

Contributors: Daemon666 ✦
Share: