Note: This was the best fitting stack I could find for this. Apparently this site doesn't specify in the scope whether this is allowed. I originally asked in Meta, and they told me to create the question so the community could decide using a concrete question.
Like other people with large gaming libraries, I've often been faced with uncertainty about what game to play. There are websites that can check your Steam library and suggest you a game based on things like Metascore, user ratings, genre preferences,... but there are 3 major issues with these:
- They require an internet connection;
- They check all your games, which also means games you've yet to download or which you got through a bundle deal with no intention of ever playing;
- They only check Steam games, not games from other clients or even just classic disc-based games.
During my spare time, I had been working on a small C# program trying to fix this. It worked using a very brute-force way: you entered a folder name, it would get ALL files from that folder, then filter out everything that wasn't a .exe file and the stuff that didn't look like it was a game executable. It kinda worked, but it had 3 main issues:
- SLOOOOOOW! it took 15 minutes to get all the files, if it didn't crash due to memory issues.
- it included things that weren't games, like uninstallers, C redists and utilities;
- I wrote it as an UWP program, which meant it wasn't portable to Windows 7 and 8 and was lacking proper libraries for things like mocking.
I'm taking another stab at it soon, but this time, I don't want to do it brute-force. I'm hoping to leverage the power of the platform and use readily available methods to find what I need.
My question is:
- Does Windows have something that can give me a list of installed games?
- If Windows can't do it, do the major digital distribution clients (meaning Steam, Origin and UPlay) have a way to provide a list of installed games? I don't mind if it means parsing files and then looking things up.