Ciao,
utilizzando meramente il registro potresti fare riferimento alla chiave SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall e a tutte le sue sottochiavi (riferite alle apps installate).
Esempio di semplice enumerazione -codice non ottimizzato, nè-:
Dim keyApplications As RegistryKey = Registry.LocalMachine.OpenSubKey("SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall")
Dim keySingleApp As RegistryKey
For Each objSubMain As String In keyApplications.GetSubKeyNames()
keySingleApp = Registry.LocalMachine.OpenSubKey(String.Concat("SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\", objSubMain))
If (Not keySingleApp Is Nothing) Then
If (keySingleApp.GetValue("DisplayName") <> String.Empty AndAlso keySingleApp.GetValue("DisplayIcon") <> String.Empty) Then
Debug.Print(keySingleApp.GetValue("DisplayName") & _
" .. " & keySingleApp.GetValue("DisplayIcon") & _
" .. " & keySingleApp.GetValue("InstallLocation"))
End If
End If
Next
Penso che l'assegnazione ad una text e l'inserimento di una voce in una lista non siano un problema.
Per cercare i valori delle chiavi di registro che ti interessano, puoi sempre aprirne una tramite regedit ed effettuare una ricerca veloce.
Ciao!