How Windows 98 Handled System File Updates

During software updates and installations, Microsoft Windows 98 managed system file replacements through a combination of boot-time staging files, early system utilities, and new verification tools. Because the operating system could not directly overwrite core dynamic-link libraries (DLLs) and executable files currently loaded into memory, it relied on the WININIT.INI file to stage replacements for the next reboot. Additionally, Windows 98 introduced the Version Conflict Manager (VCM) and the System File Checker (SFC) to prevent older software installers from downgrading critical files, an issue widely known as "DLL Hell."

In-Use File Locking and WININIT.INI

When an installer needed to replace a file currently locked by the operating system, it could not overwrite the target file immediately. Instead, the installer copied the updated file to a temporary location or named it with a temporary extension, then registered a file-replacement request in a configuration file named WININIT.INI located in the C:\WINDOWS directory.

The WININIT.INI file contained a [Rename] section using a specific destination-equals-source syntax:

[Rename]
C:\WINDOWS\SYSTEM\TARGET.DLL=C:\WINDOWS\TEMP\TEMPFILE.DLL
NUL=C:\WINDOWS\SYSTEM\OLDDELETEME.DLL

If an installer intended to delete an obsolete file upon reboot, it mapped the destination path to NUL.

The Boot-Time Execution Phase

The actual file replacement occurred during the early stages of system startup, before the 32-bit graphical user interface loaded into memory.

  1. As the system booted, WININIT.EXE executed in real mode.
  2. The executable processed every line within the [Rename] section of WININIT.INI. Because no system DLLs, drivers, or graphical subsystems were active yet, the files were unlocked and writable.
  3. Once all files were moved, renamed, or deleted, WININIT.EXE deleted WININIT.INI to prevent duplicate processing on subsequent boots.
  4. The system continued loading the Windows shell with the updated files safely in place.

The Version Conflict Manager (VCM)

In earlier versions like Windows 95, third-party software installers frequently overwrote newer operating system libraries with older bundled versions, causing system instability. Windows 98 addressed this by integrating the Version Conflict Manager (VCMUI.EXE).

During setup or update routines, Windows examined file version resources. If an installer attempted to replace a newer file with an older one, Windows retained the newer file and backed up the older installer-provided version into the C:\WINDOWS\VCM folder. Users could later open the Version Conflict Manager to inspect these conflicts, see which application initiated the change, and manually restore the older version if compatibility issues arose.

System File Checker (SFC)

Windows 98 also introduced the System File Checker utility (SFC.EXE). This utility maintained a baseline database of core operating system files, tracking file sizes, dates, and cyclic redundancy check (CRC) checksums.

If an update corrupted or improperly modified a system file, SFC could scan the system, detect the unauthorized divergence, and prompt the user to restore the original, intact system file directly from the Windows 98 installation media or local setup files.