Search notes:

Registry: HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Uninstall

This key stores the information needed to uninstall a (properly) installed program (software) or application.
Each uninstallable application is stored in a subkey whose name sometimes is a GUID (in curly braces).

Uninstall software from the command line

WMIC

Apparently, it's possible to uninstall software with wmic.exe.
The first query is used to display all installed (and uninstallable) software. With its result, the second command allows to specifically uninstall a package.
For a reason I don't really understand, the first query takes quite some time to complete.
c:\> wmic product get caption, installDate, vendor
c:\> wmic path win32_product where "name = '<< caption found with previous command >>'" call uninstal

MsiExec

It also seems possible to uninstall a software by its GUID with MsiExec:
C:\> MsiExec /X{AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE}

Listing uninstallable software

The following PowerShell script iterates over the kyes in HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall and its cousin under the HKLM:\Software\Wow6432Node to list all uninstallable software along with some additional information:
function printIfText {
   param (
     [string] $title,
     [string] $text
   )

   if ($text -ne $null -and $text -ne '') {
      '  {0,-13}: {1}' -f $title, $text
   }
}

function iterate {

   param (
     [Microsoft.Win32.RegistryKey] $key
   )

   foreach ($appId in $key.GetSubKeyNames()) {

      $appKey          = $key.OpenSubKey($appId)

      $displayname     = $appKey.GetValue('DisplayName'    )
      $installDate     = $appKey.GetValue('InstallDate'    )
      $installLocation = $appKey.GetValue('InstallLocation')
      $installSource   = $appKey.GetValue('InstallSource'  )
      $uninstallString = $appKey.GetValue('UninstallString')
      $comments        = $appKey.GetValue('Comments'       )
      $readme          = $appKey.GetValue('Readme'         )

      if ($displayname -eq $null) {
         $appId
      }
      else {
        "$displayName - $appId"
      }

      printIfText "Uninstall cmd" $uninstallString
      printIfText "Install src"   $installSource
      printIfText "Install loc"   $installLocation
      printIfText "Install date"  $installDate
      printIfText "Comments"      $comments
      printIfText "Readme"        $readme


      if ($readme -ne $null -and $readme -ne '') {
#        return
      }

      ''
      $appKey.Close()
   }
}

iterate (get-item hklm:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall            )
iterate (get-item hklm:\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall)
Github repository about-Windows-Registry, path: /HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows/CurrentVersion/Uninstall/list-applications.ps1

See also

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer
appwiz.cpl

Index