Following code shows how to get a list of programs into listview using wmi query. Drop 2 buttons and a listview into a Windows Form and test it


Public Class Form1

 Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

  ListView1.View = View.Details
  ListView1.Columns.AddRange(New ColumnHeader() {New ColumnHeader() With {.Text = "Caption", .Width = 150}, _
  New ColumnHeader() With {.Text = "Vendor", .Width = 150}, _
  New ColumnHeader() With {.Text = "Version", .Width = 200}})

 End Sub

 Private Sub btnGetProgram_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnGetProgram.Click

  Dim searcher As New ManagementObjectSearcher("root\cimv2", "SELECT * FROM Win32_Product")
  For Each queryObj As ManagementObject In searcher.Get()
   Dim li As ListViewItem = ListView1.Items.Add(queryObj.Item("Caption").ToString)
   li.SubItems.Add(queryObj.Item("Vendor").ToString)
   li.SubItems.Add(queryObj.Item("Version").ToString)
  Next
 End Sub

 Private Sub btnDelete_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnDelete.Click
  Dim searcher As New ManagementObjectSearcher("root\cimv2", String.Format("SELECT * FROM Win32_Product where caption='{0}' and Version ='{1}'", ListView1.SelectedItems(0).Text, ListView1.SelectedItems(0).SubItems(2).Text))

  For Each queryObj As ManagementObject In searcher.Get()

   queryObj.InvokeMethod("Uninstall", Nothing)
  Next
 End Sub


End Class