2016-06-14 2 views
-1

Ich habe diesen Ansatz versucht, die Liste der Programme hinzufügen/entfernen zu bekommen und es nicht geben noch nicht der genaue ListeGet In entfernen Genau Programmliste wie in Windows-C# Framework 3.5 (nicht 4.0)

in Schau die Registrierung in 3 Plätze

installedSoftware.AddRange(GetInstalledSoftware(@"SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall")); 
installedSoftware.AddRange(GetInstalledSoftware(@"HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall")); 
installedSoftware.AddRange(GetInstalledSoftware(@"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall")); 

Code:

private List<string> GetInstalledSoftware(string regKey) 
{ 
    var installedSoftware = new List<string>(); 

    using (RegistryKey key = Registry.LocalMachine.OpenSubKey(regKey)) 
    { 
     if (key != null) 
     { 
      foreach (string subkey_name in key.GetSubKeyNames()) 
      { 
       using (RegistryKey subkey = key.OpenSubKey(subkey_name)) 
       { 
        object displayName = subkey.GetValue(ToolResources.DisplayName); 

        if (displayName != null) 
        { 
         installedSoftware.Add(displayName.ToString()); 
        } 
       } 
      } 
     } 
    } 

    return installedSoftware; 
} 

Dies ist eine 4.0-Lösung aber wird nicht funktionieren in 3.5

C#: How to get installing programs exactly like in control panel programs and features?

Was fehlt mir?

Antwort

0

Dies ist auf die automatische Abfrage von 32/64 Bit Schlüsseln zurückzuführen. Wenn Sie 4 .net haben, können Sie 32-Bit-Anwendungen erzwingen für x64-Tasten zur Abfrage durch die RegistryView.Registry64 mit Attribut

var hklm = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry64)) 
using (var key = hklm.OpenSubKey(key)) 
{....} 

wenn Sie die gleiche Funktionalität in .net 3.5 verwenden möchten, müssen Sie schreiben Ruhe ein wenig Code. Lesen Sie diesen Artikel für eine Lösung. Query Registry With .net 3.5

„Dies auch in .NET 3.5 und vor getan werden kann, aber es ist nicht leicht Wir müssen tun, um eine DLLImport verwenden und RegOpenKeyEx, RegCloseKey und RegQueryValueEx Hier sind. einige Beispiele."

Verwandte Themen