Поиск программ в 64-битных и 32-битных регистрах дает 32-битные - PullRequest
0 голосов
/ 07 мая 2020

Я использую следующий метод: Проверьте, установлено ли приложение в реестре , чтобы найти «Sql Server 2019».

Проблема возникает, когда я запускаю программу с активными платформами решений: Любой CPU.

string registryKey64 = @"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall";
string registryKey32 = @"SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall";

RegistryKey key64 = Registry.LocalMachine.OpenSubKey(registryKey64);
RegistryKey key32 = Registry.LocalMachine.OpenSubKey(registryKey32);

Затем key64 == key32. Это приводит к тому, что он не может найти 64-битный sql сервер. Проблема не возникает в обратном направлении.

Я не хочу запускать программу для 64-битных платформ. Как мне попасть в 64-битные регистры?

1 Ответ

0 голосов
/ 11 мая 2020

Мое решение:

string registryKey = @"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall";
RegistryKey key64 = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, 
RegistryView.Registry64);
RegistryKey key = key64.OpenSubKey(registryKey);
if (key != null)
{
    var list = key.GetSubKeyNames().Select(keyName => key.OpenSubKey(keyName).GetValue("DisplayName")).ToList();

    key.Close();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...