En principio puedes saber que software está registrado en el sistema, y aún esto con ciertas salvedades. Usualmente, cuando se instala una aplicación, el programa de instalación puede generar claves en el registro de Windows, tanto en HKEY_LOCAL_MACHINE\Software como en HKEY_CURRENT_USER\Software. Las aplicaciones que así lo hacen suelen además agrupar su software en claves de empresa. Por ejemplo, mi registro contiene las siguientes claves correspondientes a JavaSoft:
HKEY_LOCAL_MACHINE\Software\JavaSoft\Java Development Kit
HKEY_LOCAL_MACHINE\Software\JavaSoft\Java Plug-in
HKEY_LOCAL_MACHINE\Software\JavaSoft\Java Runtime Environment
HKEY_LOCAL_MACHINE\Software\JavaSoft\Java Web Start
HKEY_LOCAL_MACHINE\Software\JavaSoft\Prefs
Esto puede resultar confuso en ocasiones: todas estas claves se han generado al instalar el SDK de Java, que es un único software.
Otra pista te la puede dar también el registro, mirando en la clave HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Uninstall; aquí aparecen registradas aquellas aplicaciones que podemos ver en la opción de "Agregar o quitar programas" del Panel de Control.
Y todavía hay más: la clave HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Extensions te proporciona asociaciones entre tipos de archivo y programas, así como la muy extensa clave HKEY_CLASSES_ROOT; también puedes examinar el directorio "Archivos de programa" ... hay múltiples fuentes de información para este caso, pero ninguna es determinante ni absoluta.