Conflicting vJoy Installs: Remove Every Old Version Cleanly
Many stubborn vJoy problems are not one broken install. They are several installs at war: an original-line build from one year, a fork from another, and the remains of a failed attempt, all sharing one driver name. Only one vjoy.sys can run, so mixed branch files produce exactly the failures this troubleshooting section exists for — version mismatches, drivers that will not enable, devices that vanish. This guide removes every old version cleanly, including the driver store, and installs a single build on an empty base.
How conflicts happen
vJoy’s history invites stacking. The original line by Shaul Eizikovich ends at 2.1.9.1. The njz3 fork reached 2.2.1.1 with force-feedback work. The BrunnerInnovation build reached 2.2.2.0, forked from the njz3 line, with explicit Windows 10 and 11 support. A reader chasing a fix can easily install all three in a weekend, each time over the last. Add feeder applications bundling their own vJoyInterface.dll copies, and different folders end up holding files from different releases. The system then has one driver slot and several claimants, and the resulting errors — including the classic driver 219 versus DLL 218 mismatch — look random until you see the stack for what it is.
The full procedure
Step 1: inventory before you delete
Open Settings, Apps, and note every vJoy-related entry. Open C:\Program Files\vJoy and note that it exists. If you use feeders, note which ones you rely on, because you will retest them afterwards. This inventory takes two minutes and prevents the classic mistake of removing something, forgetting what was there, and being unable to describe the starting state when asking for help.
Step 2: uninstall all versions
- Uninstall every vJoy entry from Settings, Apps — not just the newest, and not just the one you think you use. All of them.
- Restart Windows, even if no uninstaller asked you to. Pending driver operations from several uninstalls need a reboot to complete.
- After the reboot, confirm the entries are gone from Settings, Apps, before proceeding to the driver store.
Step 3: pnputil driver-store cleanup
A normal uninstall can leave the driver package in the Windows driver store, where it remains available to be loaded again. The documented vJoy cleanup handles this with pnputil. Open an elevated terminal and run pnputil -e to list driver-store packages. Find the entries belonging to Shaul or vJoy — read each candidate’s provider and class carefully. Remove only the vJoy entries, using pnputil -f -d oemXX.inf with the exact INF name pnputil showed for that entry. Never guess an oem number from an example, never remove packages from other providers, and if you cannot confidently identify a vJoy entry, stop and leave it rather than deleting the wrong hardware’s driver. When in doubt, our complete uninstall guide shows the same procedure with the same cautions.
Step 4: reboot, then install a single build
- Reboot once more after the driver-store cleanup, so Windows starts with no vJoy driver loaded or staged.
- Choose one build deliberately. For Windows 10 and 11, the default is BrunnerInnovation 2.2.2.0, signed with an EV certificate and attestation via the Microsoft Partner program. Choose njz3 2.2.1.1 if force feedback through that fork is your specific need, or the original 2.1.9.1 if a feeder documents problems on the 2.2.x line and needs the compatibility fallback.
- Install only that build, from a verified file on our download vjoy page where sizes and SHA-256 hashes are listed. Do not install a second build in the same session to compare. Comparison comes later, if at all, as a full clean swap.
- Reboot if the installer prompts, then verify before installing anything else on top.
Retest feeders after the clean install
A clean driver install does not rewrite files inside feeder folders. If a feeder bundled a vJoyInterface.dll from a different release, it can still produce a version-mismatch error against your fresh driver — and that error is now easy to interpret, because you know exactly which driver version you installed. Update that feeder’s DLL to the matching release, as described in our DLL mismatch guide, and retest. One by one, bring each feeder back and confirm it connects and moves axes in vJoy Monitor. Adding feeders back singly means that if a problem returns, you know which addition caused it.
How to confirm it is fixed
- Settings, Apps shows exactly one vJoy install: the build you chose.
- pnputil -e shows no stale extra vJoy packages beyond what your single current install placed there.
- joy.cpl lists your vJoy Device or Devices, and Configure vJoy opens without errors.
- Every feeder you retested connects without mismatch or not-enabled messages, and the whole setup still works after a cold reboot the next day — the real test of a conflict fix.
A single-build system is boring in the best way: one driver, one version story, errors that mean what they say. If problems return, they will return as one identifiable issue rather than a pile-up — and that is when troubleshooting gets fast.
Related guides
- Download vJoy — get a verified build with its file size and SHA-256 hash.
- Which vJoy build should you download? — compare the signed 2.2.2.0 build, the njz3 force-feedback fork and the original 2.1.9.1.
- Uninstall vJoy completely — the full clean-removal procedure, including the driver store.
- vJoy failed to install: causes and fixes
- Fix: driver version 219 does not match DLL version 218
vJoy is an unofficially documented tool on this site. vJoy itself was created by Shaul Eizikovich, with later signed forks by other maintainers. This site is not the official vJoy project site.
