Я пытаюсь запросить все установленные приложения для моей машины.При использовании подхода ниже 2
При использовании 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
?