Mit dieser Klasse werden die installierten Programme in Windows aufgelistet. Jedoch nur diese, welche sich in die Registry schreiben.
using System;
using System.Collections.Generic;
using System.Text;
using System.Windows.Forms;
using Microsoft.Win32;
using System.Collections.Specialized;
namespace myNamespace
{
class Programme
{
//Installierte Programme aus der Registry auslesen.
public static StringCollection installierteProgramme()
{
StringCollection alleProgramme = new StringCollection();
string regKeyPfad = @"Software\Microsoft\Windows\CurrentVersion\Uninstall";
RegistryKey regKey = Registry.LocalMachine.OpenSubKey(regKeyPfad);
if (regKey != null)
{
string[] subKeyNames = regKey.GetSubKeyNames();
for (int i = 0; i < subKeyNames.Length; i++)
{
RegistryKey subKey = regKey.OpenSubKey(subKeyNames[i]);
string programmName = (string)subKey.GetValue("DisplayName");
if (programmName == null)
{
programmName = (string)subKey.GetValue("QuitDisplayName");
}
if (programmName != null)
{
alleProgramme.Add(programmName);
}
}
}
else
{
throw new Exception("Registry-Schluessel"
+ Registry.LocalMachine.Name
+ "\\" + regKeyPfad
+ " nicht gefunden");
}
return alleProgramme;
}
//Diese Methode übergibt die aus der Registry ausgelesenen Programme in eine Listbox, könnte auch ein TreeView oder ähnliches sein. In diesem Fall übergibt sie es an eine ListBox
public void holeInstallierteProgs(ListBox listbox)
{
StringCollection st = new StringCollection();
st = installierteProgramme();
for (int i = 0; i < st.Count - 1; i++)
{
if (st[i].Contains("Hotfix") || st[i].Contains("Sicherheitsupdate") || st[i].Contains("Update"))
{
st.RemoveAt(i);
}
}
foreach (string programme in st)
{
listbox.Items.Add(programme);
}
}
}
}
4 Kommentare zum Snippet