Installierte Programme in einer Listbox auflisten und deren Pfade bei Klick in einer Textbox anzeigen lassen

  • VB.NET

Es gibt 2 Antworten in diesem Thema. Der letzte Beitrag () ist von Bartosz.

    Installierte Programme in einer Listbox auflisten und deren Pfade bei Klick in einer Textbox anzeigen lassen

    Der Titel sagt es schon...
    Ich möchte alle installierten Programme/Apps vom PC in einer Listbox auflisten lassen.
    Wenn ich ein Programm wähle, soll der jeweilige Pfad in einer Textbox angezeigt werden.
    Nur wie?
    Vielen Dank im Vorraus!
    Anscheinend stehen die Programme in diesem Registry-Key: \HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\

    Hier gibt es eine Antwort, wie man das auslesen könnte: docs.microsoft.com/en-us/answe…talled-software-list.html
    Besucht auch mein anderes Forum:
    Das Amateurfilm-Forum
    Hey @Peaceman, suchst du noch eine Lösung?
    Ich hätte folgenden Code-Vorschlag für dich. Ich habe zwar nicht der Registry alle installieren Programme gesucht, sondern einfach Musikdateien finden lassen, aber hier geht's um die Struktur. Den Registry-Key hat M.G. dir ja gegeben.
    Also, was haben wir?
    Es gibt eine Form mit 1 Textbox, 1 Listbox und 1 Button. Der Button stelldt das Finden der Programme dar.
    Die Hauptklasse
    FormMain übernimmt die Buttonprozedur, das Suchen, das Befüllen der ListBox und die Auswahl in der Listbox. Des Weiteren gibt es noch eine Klasse ClassProgramme. Diese enthält nur den Namen und den Pfad. Nicht mehr und nicht weniger. Für jede gefundene Datei wird eine neue Instanz der ClassProgramme erzeugt und die Variablen Name und Pfad werden beschrieben. Um es jetzt möglichst handhabbar zu machen, tun wir diese Instanzen in eine List(of ClassProgramme). Dann haben wir alles in einem. (Gewöhn dir das gleich an, Instanzen in eine List(of Instanzen) zu tun, dann kannste später schön durchiterieren usw.)
    Wenn dir das alles nichts gesagt, schaue dir objektorientiere Programmierung an. Die Klasse ist der Blueprint und die Instanzen werden daraus gebildet. Der Bauplan ist derselbe, aber die einzelnen Properties können anders sein.
    Ein VW Golf V ist und bleibt ein VW Golf V aber die Farbe kann ja anders sein.
    miro.medium.com/max/1092/1*NjnesDsRhwV2_3djyxZ1sw.png

    Wenn du nun 1.) in der ListBox ein Item anklickst und 2.) du geprüft hast, ob der SelectedIndex nicht (-1) ist (was manchmal durch zu schnelles Klicken passiert) und 3.) du geprüft hast, ob unsere ProgrammeListe nicht leer ist, dann kannst du dir in der Textbox den Pfad ausgeben lassen.
    Und statt Name und Pfad von Musikdateien nimmst deine gefundenen Programme.
    War das soweit verständlich?


    FormMain.vb

    VB.NET-Quellcode

    1. Public NotInheritable Class FormMain
    2. Private Alle_Programme As List(Of ClassProgramme)
    3. Private Sub FormMain_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    4. Me.Location = New Point(0, 0)
    5. End Sub
    6. Private Sub Button_Simu_Click(sender As Object, e As EventArgs) Handles Button_Simu.Click
    7. Dim DI As New System.IO.DirectoryInfo("E:\Charts (alt)")
    8. Dim erlaubteDateienList As New List(Of String) From {".mp3"}
    9. Alle_Programme = New List(Of ClassProgramme)
    10. For Each _File As IO.FileInfo In DI.GetFiles
    11. If erlaubteDateienList.Contains(_File.Extension.ToLower()) Then
    12. Alle_Programme.Add(New ClassProgramme(_File.Name, _File.FullName))
    13. ListBox1.Items.Add(_File.Name)
    14. End If
    15. Next
    16. End Sub
    17. Private Sub ListBox1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ListBox1.SelectedIndexChanged
    18. If ListBox1.SelectedIndex = (-1) Then Return
    19. If Alle_Programme Is Nothing OrElse Alle_Programme.Count = 0 Then Return
    20. TextBox1.Text = Alle_Programme(ListBox1.SelectedIndex).Pfad
    21. End Sub
    22. End Class


    ClassProgramme.vb

    VB.NET-Quellcode

    1. Public NotInheritable Class ClassProgramme
    2. Public Name As String = ""
    3. Public Pfad As String = ""
    4. Public Sub New(ByVal name As String, ByVal pfad As String)
    5. Me.Name = name
    6. Me.Pfad = pfad
    7. End Sub
    8. End Class
    Bilder
    • Projektmappenexplorer.png

      19,5 kB, 590×389, 59 mal angesehen