Feedback

C# - Installierte Programme auflisten

Veröffentlicht von am 16.08.2007
(4 Bewertungen)
Mit dieser Klasse werden die installierten Programme in Windows aufgelistet. Jedoch nur diese, welche sich in die Registry schreiben.
GFU-Schulungen  [Anzeige]

VB.NET 2017/2015/2013 Einführung

Das Seminar befähigt Sie zur eigenständigen Entwicklung von anwenderorientierten Programmen in VB.NET, worin auch der Einsatz von Datenbanken enthalten ist.

Visual Studio Team Foundation Server 2017/2015 (TFS) für Projektmitglieder - Kompakt

Nach Teilnahme an dieser Schulung sind Ihnen die Grundlagen von ALM geläufig. Sie planen und steuern Projekte effizient mit dem Visual Studio Team Foundation Server.

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

backdoor schrieb am 17.08.2007:
wie kann man die auflist funktion aufrufen? wenn ich holeInstallierteProgs(ListBox listbox) verwende dann gehts nicht.
Jan Welker schrieb am 17.08.2007:
Du musst nur den Namen Deiner Listbox angeben:

 holeInstallierteProgs(listBox1);


Dann gehts ;-)

Jan
backdoor schrieb am 18.08.2007:
achja stimmt ;-) vielen dank jan
dariusarnold schrieb am 28.02.2013:
Hey..
Weißt du / weiß jemand auch, wie man einen solchen Key hinzufügt und was darein muss?
Hab mich noch nie mit Registry beschäfftigt.. Gibt es auch einen Befehl regKey.SubKeys.Add oder regKeyAdd?
Hab grad kein PC hier um es auszuprobieren.. Ansonsten guck ich morgen einfach mal.. ;)
 

Logge dich ein, um hier zu kommentieren!