Skip to content

Repository files navigation

EDAccountSwitcher

A WPF GUI account switcher for Elite Dangerous. It is a front-end for min-ed-launcher: it manages multiple Frontier account credential files (including first-time sign-in with email 2FA) and spawns the real MinEdLauncher.exe to perform the actual game update and launch.

Quick start (release binary)

  1. Download the app (Windows 10/11): grab the latest EDAccountSwitcher-win-x64.zip from the Releases page and extract it anywhere. No .NET runtime install required.
  2. Install min-ed-launcher: download the Windows release of min-ed-launcher and place MinEdLauncher.exe in your Elite Dangerous install directory, next to EDLaunch.exe. To find that directory in Steam: right-click Elite Dangerous → ManageBrowse local files. (A different location for MinEdLauncher.exe can be set in the app's Settings area.)
  3. Run EDAccountSwitcher.exe. The ED install path is auto-detected; if it isn't found, use Browse… in the Settings area and select EDLaunch.exe.
  4. Add an account: click Add, enter a profile name (any label you like), your Frontier account email and password, and click Sign in. Check your email for the Frontier verification code, enter it, and click Submit code. This is a one-time step per account per PC.
  5. Play: select the account, pick a product (e.g. Odyssey), and press Play. Repeat step 4 for every account you want to switch between — from then on, switching is just selecting a different account.

If you are having trouble with controller support, add the ED account switcher as a non-steam game. If you bought Elite Dangerous on Steam or Epic, launch the game at least once through the official launcher first so your purchase is linked to your Frontier account.

Epic Games accounts

Epic-bought copies of Elite Dangerous authenticate through Epic, not through a Frontier email/password login — so the Add / 2FA sign-in flow in this app does not apply to them (there are no .cred files for Epic accounts). Epic copies can also only be played via the Epic ecosystem, not via the standard or Steam launchers. Use one of min-ed-launcher's two Epic flows instead:

Option A — Epic client + min-ed-launcher bootstrap (recommended)

  1. Place MinEdLauncher.exe and MinEdLauncher.Bootstrap.exe from the min-ed-launcher Windows release into your ED install directory.
  2. Rename EDLaunch.exe to EDLaunch.exe.bak, then copy MinEdLauncher.Bootstrap.exe and rename the copy to EDLaunch.exe. (Epic doesn't allow changing the game's startup executable, so the bootstrap pretends to be it. Redo this step after every game update or file verification.)
  3. In the Epic Games client: Settings → scroll to Elite Dangerous → check Additional Command Line Arguments → enter /autorun /autoquit.
  4. Launch the game from the Epic client as usual. To switch Epic accounts, sign out/in in the Epic client first — the client must be logged into the Epic account that owns the copy you want to play.

Option B — Legendary (advanced, also enables multi-account scripting)

  1. Install Legendary and run legendary auth to sign in to your Epic account.
  2. Launch with legendary launch 9c203b6ed35846e8a4a9ff1e314f6593 --override-exe "C:\path\to\MinEdLauncher.exe" /autorun /autoquit.
  3. Legendary keeps one Epic login per config directory. For multiple Epic accounts, keep a separate config dir per account and point LEGENDARY_CONFIG_PATH at the right one before launching (or use Heroic, whose login min-ed-launcher can also read).

Building from source

Prerequisites: .NET 10 SDK (dotnet --list-sdks should show 10.x).

dotnet build EDAccountSwitcher.sln -c Release
dotnet test EDAccountSwitcher.sln -c Release
dotnet run --project EDAccountSwitcher -c Release

Self-contained publish (produces the same binary as the release zip):

dotnet publish EDAccountSwitcher -c Release -r win-x64 --self-contained -p:PublishSingleFile=true

Usage

  • Settings (top): the ED install path is auto-detected (same search order as min-ed-launcher: the app's own directory, C:\Program Files (x86)\Steam\steamapps\common\Elite Dangerous, %ProgramFiles(x86)%\Frontier, %LOCALAPPDATA%\Frontier_Developments, then the saved override). Both paths are editable and persisted to %LOCALAPPDATA%\EDAccountSwitcher\settings.json.
  • Accounts (left): lists every .frontier-*.cred file found in %LOCALAPPDATA%\min-ed-launcher. Add opens the sign-in panel (profile name, email, password → email 2FA code). Remove deletes the cred file after confirmation. Re-verify discards the stored machine token and re-runs the sign-in flow (a fresh 2FA code is usually required).
  • Launch (bottom): pick an account, an installed product (Odyssey /edo, Horizons 4.x /edh4, base game /ed), optionally VR, and press Play. The launcher's console output streams into the log pane.

How it works

The app is a C# port of the relevant min-ed-launcher internals (the F# sources were used as the spec):

  • Credential files are fully compatible with min-ed-launcher: %LOCALAPPDATA%\min-ed-launcher\.frontier-<profile-lowercased>.cred, three lines: plaintext email, encrypted password, encrypted machine token (2 lines when no token exists yet). Encryption is UTF-16LE → DPAPI ProtectedData with DataProtectionScope.CurrentUser and the salt reflected from ClientSupport.dll (type ClientSupport.DecoderRing, private static field salt) in the ED install dir → Base64. Because the same salt and scope are used, cred files written by this app are readable by min-ed-launcher and vice versa.
  • Machine ID matches min-ed-launcher exactly: SHA1 over the concatenation of HKLM\SOFTWARE\Microsoft\Cryptography\MachineGuid and HKCU\SOFTWARE\Frontier Developments\Cryptography\MachineGuid (created if missing), hex, truncated to 16 lowercase chars.
  • Sign-in talks to https://api.zaonce.net exactly like min-ed-launcher: GET /1.1/server/time, then POST /3.0/user/frontier/auth with email and password as hex-encoded UTF-8 in the query string plus machineId, lang, fTime; 2FA is completed with POST /3.0/user/frontier/token (machineId, plainCode, encCode, lang) which returns the machine token that gets stored on line 3 of the cred file.
  • Launching spawns MinEdLauncher.exe /frontier <profile> /autorun /<product-filter> [/vr] /autoquit waitForExit with the ED install dir as working directory. Since the launcher runs fully unattended (no console prompts), the cred file must already contain all three lines — use Add or Re-verify first. Exit code 0 means success, 1 failure.

Project layout

EDAccountSwitcher/          WPF app (net10.0-windows)
  Core/                     Hex, MachineId, CredStore, FrontierAuth, GameLocator, LaunchRunner, AppSettings
  ViewModels/               MainViewModel (hand-rolled MVVM, no external MVVM packages)
  MainWindow.xaml[.cs]      UI
EDAccountSwitcher.Tests/    xUnit tests (net10.0-windows)

Note: this app does not modify min-ed-launcher; it is a separate front-end that shares min-ed-launcher's credential-file format so both tools can be used interchangeably.

About

A simple GUI for min-ed launcher which basically stores credentials as .cred files (encrypted and on your own machine) for your accounts and you can launch ED directly from it.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages