Listar programas instalados en mi Sistema Operativo

Buscando por internet como obtener la lista de los programas instalados en mi sistema operativo, ninguna respuesta la he encontrado genérica... la gran mayoría hacen referencia a la clase Runtime, para ejecutar comandos específicos del sistema operativo.

¿Alguien sabe si hay alguna manera genérica de obtener la lista?

Agradecería mucho si alguien tiene un ejemplo particular también para Windows.

Un saludo a todos

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.

Puedes intentar leer los

Puedes intentar leer los programas instalados en el Registry usando este programa.

Y nos avisas si funciona

Imagen de genitalico

que tal cuando dices,

que tal cuando dices, "tambien para windows" supongo que pensaras usar otro sistema tambien, para linux
puedes ejecutar el comando desde java,
aqui hay una lista de comandos para algunas distribuciones
http://lamiradadelreplicante.com/2012/10/04/crear-una-lista-de-los-progr...

una cosa curiosa que me pasa a veces, es que en linux no ejecuta comandos muy largos o con comodines, lo que hago es crear un script y luego en java ejecuto ese script ..

saludos,

Imagen de nekio

OscarRyz:Gracias por tu

OscarRyz:
Gracias por tu respuesta, el detalle es que no encuentro las librerias "npanday" para probar ese codigo

Genitalico:
Efectivamente terminé por usar un archivo .bat para ejecutar comandos de windows... el detalle es que necesitaré un script diferente para cada S.O. Pero bueno, lo importante es que me funciona bien. A grosso modo, este es en resumen mi codigo:

----------------------------------------------------------
String rutina="C:\Users\PROPIETARIO\Documents\NetBeansProjects\MiProyecto\build\classes\miprograma\recursos\script.bat";
String comando="cmd /c "+rutina+" "+"\"parametro\"";
try{
Runtime.getRuntime().exec(comando);
}catch (Exception e){}
----------------------------------------------------------

Mi codigo realmente es generico... la variable "rutina" la recibo por parametro, y tambien los parametros del script los recibo por parametro en el metodo que contiene este bloque. Asi puedo ocuparlo en distintos Sistemas Operativos, solo cambiara la ruta que contiene mi script (en la carpeta "recursos" de mi proyecto están todos los scripts), y el script mismo sería propio del S.O.

Gracias por sus respuestas