public static IEnumerable <SteamProfile> TryToFind()
{
// TODO: if (OptionForceValue != null) return OptionForceValue;
Vdf parsed;
try {
var regKey = Registry.CurrentUser.OpenSubKey(@"Software\Valve\Steam");
if (regKey == null)
{
yield break;
}
var steamPath = regKey.GetValue("SteamPath").ToString();
var config = File.ReadAllText(Path.Combine(steamPath, @"config", @"loginusers.vdf"));
parsed = Vdf.Parse(config).Children.GetValueOrDefault("users");
if (parsed == null)
{
throw new Exception("Config is invalid");
}
} catch (Exception e) {
NonfatalError.Notify("Can’t get Steam ID from its config", e);
yield break;
}
string selectedId = null;
try {
var selectedKey = new IniFile(FileUtils.GetRaceIniFilename());
selectedId = selectedKey["REMOTE"].GetNonEmpty("GUID");
} catch (Exception) {
// ignored
}
Vdf selectedSection;
if (selectedId != null && parsed.Children.TryGetValue(selectedId, out selectedSection))
{
yield return(new SteamProfile(selectedId, selectedSection.Values.GetValueOrDefault("PersonaName")));
}
foreach (var pair in parsed.Children.Where(x => x.Key != selectedId))
{
yield return(new SteamProfile(pair.Key, pair.Value.Values.GetValueOrDefault("PersonaName")));
}
}