Получение пути до игры через реестр c#

Пытаюсь получить где установлена игра из Steam, путем доставания пути из Реестра. Код в выдает ошибку: Необработанное исключение: System.NullReferenceException: Ссылка на объект не указывает на экземпляр объекта.

using (var lmRegistry = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry32))
{
    var steamRegistry = lmRegistry.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Steam App 4000", false);
    string readypath = steamRegistry.GetValue("InstallLocation").ToString();
    Console.WriteLine(readypath);
}

Ответы (1 шт):

Автор решения: Max S

Скорее всего вы запускаете код в 64-битной ОС, и обращаетесь к ключу 64-битной программы в реестре (т.к. 32-битные программы в 64-битной винде лежат немного по другому пути: HKLM\Software\WOW6432Node).

Для доступа к нужной ветке Вам нужно указать RegistryView.Registry64:

using var lmRegistry = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry64);
using var steamRegistry = lmRegistry.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Steam App 4000", false);
string readypath = steamRegistry.GetValue("InstallLocation").ToString();
Console.WriteLine(readypath);

Если lmRegistry.OpenSubKey(...) всё равно будет возвращать null, попробуйте зайти в Проект -> Свойства -> Сборка -> Целевая платформа и выберите Any CPU, либо просто откройте файл проекта и добавьте:

<PropertyGroup>
  <PlatformTarget>AnyCPU</PlatformTarget>
</PropertyGroup>
→ Ссылка