Double-click BetterJoyForCemu.exe and one of three things happens: nothing at all, a window that flashes and dies, or a stern dialog titled Microsoft .NET Framework reporting an unhandled exception. Startup failures feel alarming but have a short list of usual causes — a driver the program depends on, a settings file it cannot read, or a leftover of an older install. Issue #578’s crash report is the reference case for the first; the v7.1 release itself exists because of the second. Work through the sections in order.
Before the causes: the SmartScreen look-alike
On a first launch, Windows may intercept the .exe with a SmartScreen prompt (“Windows protected your PC”) instead of opening the program, which reads as “won’t start.” That is Windows being cautious about a program without a commercial signature, not a crash: choose More info → Run anyway and the program opens normally — provided your copy is the verified package, which is the whole point of checking the hash published alongside it. SmartScreen only explains a first-launch block, though. If the program previously ran on this machine and now fails, skip ahead: something in its stack changed, and the causes below are where to look.
Cause 1: The dialog names .NET, but the fix is ViGEmBus (#578)
It confuses everyone the first time: the crash popup says “Microsoft .NET Framework,” yet in issue #578 the recorded remedy was to remove and reinstall ViGEmBus. The dialog title names the framework that reported the exception, not the component that failed — when BetterJoy starts, it initialises its virtual-controller layer, and a broken ViGEmBus install surfaces as exactly this unhandled-exception dialog. So: uninstall ViGEmBus (Settings → Apps), reboot, install the current 1.22.0 from the link on our download page, reboot again, and relaunch. Our ViGEmBus not found guide covers the full repair, including the Device Manager check.
Cause 2: A config file your Windows locale can’t read — updating is the fix
BetterJoy v7.1 exists for one reason. Its entire official changelog is a single fix: config reading did not work when the Windows locale uses a comma as the decimal separator — which is most of Europe and much of the world. If you are on v7.0 or earlier with such a locale, and the program crashes or misbehaves around reading its BetterJoyForCemu.exe.config, you do not have a mystery bug; you have the exact defect the hotfix repaired. Updating to v7.1 is the fix. Our update guide covers moving up without losing your settings.
Cause 3: A corrupted or badly edited config — restore a fresh one
Hand-editing the .exe.config is part of normal BetterJoy life (calibration values, legacy toggles), and a malformed edit can leave the program unable to parse the file at startup. The clean recovery:
- Close BetterJoy fully (check the system tray).
- Rename your current
BetterJoyForCemu.exe.configto something like.config.bak— don’t delete it; your settings live there. - Extract a fresh, untouched .exe.config from the original v7.1 ZIP into the program folder.
- Launch. If the program starts, re-apply your edits one at a time, launching after each, until the bad edit reveals itself.
- If it still won’t start with a pristine config, the config was never the problem — move on to Cause 4.
The config file guide explains what each documented setting does, so your re-applied edits are deliberate ones.
Cause 4: Driver conflicts and leftovers — isolate them
BetterJoy sits on a small stack of drivers, and conflicts there surface as startup failures rather than neat errors. Isolate them in this order:
- Two hiding layers: if you ever installed both the bundled HIDGuardian and the modern HidHide, they are documented as mutually exclusive — the author’s own guide says they must not be on the same system. Pick one stack and remove the other properly (ordered removal in our HIDGuardian recovery guide).
- An instance already running: since v6.3 the program refuses to open a second copy. An old instance minimised to the tray makes a fresh double-click look like a crash. Check the tray and Task Manager before diagnosing anything else.
- A damaged program folder: extract the ZIP to a new folder in a normal user location (not a protected directory — see the settings-path problem in the not-detected guide) and run from there. If the fresh copy starts, your old folder was the fault.
- Security software: check your antivirus quarantine for the .exe or its DLLs before assuming corruption, and only restore files from the verified package.
If none of the four causes fits, capture the exact dialog text — the exception dialog’s details are what the project’s issue tracker needs, and the quoted error string is usually how a maintainer recognises the case. All other startup-adjacent fixes are indexed on the troubleshooting hub.
FAQ
Does BetterJoy need a specific .NET version installed?
The official documentation does not state a runtime version requirement, and we won’t invent one. What is documented is the behaviour above: the “.NET Framework” dialog is the messenger, and its recorded triggers are the ViGEmBus install state (#578) and config reading (v7.1’s locale fix). Fix those before touching .NET itself.
It crashes only when I connect the controller, not at launch. Same page?
Related, but start with the ViGEmBus guide — virtual controllers are created at connection time, so a bus problem can wait until then to surface — then check for the two-hiding-layers conflict in Cause 4.
Will reinstalling BetterJoy delete my remappings?
Your settings live in BetterJoyForCemu.exe.config in the program folder. Back that file up before any reinstall or folder move and your configuration survives; the update guide explains the full preserve-your-settings routine.
