Repository navigation
Help code a platform
Most platform work is research: find which files and registry values change between two remembered logins. That research maps into Platforms.json.
Video walkthrough:
Account switching uses saved login state:
- Files and folders in AppData, ProgramData, Documents, or the install folder.
- Registry keys or values.
- JSON, SQLite, LevelDB, or config fields that identify the current account.
The goal is to switch from Account A to Account B by restoring local data, without using the platform's logout button.
Best for AppData and LocalAppData configs.
- Sign in as Account A with remember-login enabled.
- Copy likely folders to a backup folder.
- Sign in as Account B.
- Compare the live folder with the backup in WinMerge.
- Record files that differ or exist on only one side.
Common roots:
%AppData%%LocalAppData%%ProgramData%Documents
- Sign in as Account A.
- Use RegistryChangesView to create a snapshot.
- Sign in as Account B.
- Compare the snapshot with the current registry.
- Filter by vendor names such as
GOG,Epic, orRiot.
Record full key paths, value names, value types, and which values contain account ids or tokens.
Process Monitor shows file and registry access while logging in or out.
Example filters:
| Rule | Action |
|---|---|
Process Name is GameLauncher.exe
|
Include |
Operation is TCP Receive
|
Exclude |
Operation is TCP Send
|
Exclude |
Log in and out two or three times. Look for .json, .cfg, .vdf, .db, leveldb, and HKCU\Software\{Vendor} paths.
- While Account A is logged in, copy candidate files to
BackupA\. - Close the platform completely.
- Delete or rename candidate files from the live system.
- Start the platform, sign in as Account B, then copy candidates to
BackupB\. - Close the platform, restore
BackupA, and start it again.
If the launcher opens as Account A, those files are swap candidates. Mark which files are required and which are cache-only.
The switcher needs one stable id per account.
Search changed files for:
- Email address
- Username
- Numeric user id
- JWT fragments
- Fields named
last user,accountId,userId, or similar
Tools:
Document the file path and regex. These become UniqueIdFile and UniqueIdRegex.
Launchers move files after updates.
- Open
{UserData}/Platforms.json. - Check whether the listed paths still exist.
- Re-run folder, registry, or Procmon checks.
- Open a GitHub issue with:
- Platform name and broken version
- Old paths and new paths
- Required files for a successful swap
- Unique id path or regex, if known
- Copy a similar platform block from
Platforms.json. - Edit
Identifiers,ExeLocationDefault,ExesToEnd,LoginFiles, and the unique id keys. - Read Templated platform guide.
- Test through
{UserData}/Platforms.custom.json. - Add the SVG icon.
- Open a pull request.
Path:
frontend/public/img/platform/{Platform Name}.svg
Requirements:
- Single merged path
id="FG"- No hard-coded
fillon the path viewBox="0 0 500 500"- Expanded outlines, not stroke-only shapes
Use JSON unless the platform needs code to resolve its account id.
| Platform | File |
|---|---|
| Rockstar | internal/basic/platforms/rockstar.go |
| EA Desktop | internal/basic/platforms/ea_desktop.go |
| GeForce Now | internal/basic/platforms/geforce_now.go |
If you do not want to open a PR, open an issue with the file and registry lists. A contributor can convert the research to JSON.
All trademarks and materials are the property of their respective owners and their licensors. This project is not affiliated with any companies referenced. This is not "Official" software or related to any companies mentioned. All it does is let you move your files around on your computer the same way you can. The use of names, icons and trademarks does not indicate endorsement of the trademark holder by this project or its creators, nor vice versa. They are only used to visually indicate which programs this project interacts with easily to the end-user.
By enabling optional features that scrape the web for publicly available information (such as limited game/profile statistics and other data), you understand and accept full responsibility for doing so on your own volition. If you appreciate accurate information, support the services providing it directly. The information collected is incredibly limited and is no replacement or competitor for sites scraped.
I am not responsible for the contents of external links. For the rest of the disclaimer, refer to the License (GNU General Public License v3.0) file: https://github.com/TCNOco/TcNo-Acc-Switcher/blob/master/LICENSE - See sections like 15, 16 and 17, as well as GitHub's 'simplification' at the top of the above website.
Information
Build and contribute
- Building from source
- Building on Linux
- Help code a platform
- Templated platform guide
- Game statistics guide
Platforms
Automation