WMI и данные запроса реестра не совпадают - PullRequest
0 голосов
/ 12 марта 2019

Я пытаюсь запросить все установленные приложения для моей машины.При использовании подхода ниже 2

  1. При использовании WMI

    ManagementObjectSearcher mos = new ManagementObjectSearcher("SELECT * FROM Win32_Product");
    foreach(ManagementObject mo in mos.Get())
    {
    Console.WriteLine(mo["Name"]);
    }
    

При использовании приведенного выше кода у меня всего 422 записи.

Использование реестра

string registry_key = @"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall";
 using(Microsoft.Win32.RegistryKey key = Registry.LocalMachine.OpenSubKey(registry_key))
{
 foreach(string subkey_name in key.GetSubKeyNames())
{
using(RegistryKey subkey = key.OpenSubKey(subkey_name))
{
    Console.WriteLine(subkey.GetValue("DisplayName"));
}
}
}

Используя приведенный выше код, у меня всего 282 записи.Примечание: и SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall, и SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall дают одинаковый результат.

При WMI я получаю больше результатов, чем Registry, пожалуйста, укажите причину?также немногие, которые собираются через Registry, не обнаруживаются при сборе через WMI?

...