Detectando programas instalados via registro

Preciso desenvolver um processo que detecte se o computador dos usuários possui determinados programas instalados e, em caso afirmativo, qual versão. Acredito que precisarei de uma lista com o local do registro e as chaves para procurar e alimentá-lo com o programa, o que não é um problema. Existe uma maneira melhor de conseguir isso?

Meu primeiro pensamento foi verificar o registro nas entradas de desinstalação, mas parece que um dos aplicativos que desejo detectar não possui um. Qual é o local padrão para todos os registros que usam aplicativos para fazer uma entrada?

questionAnswers(9)

yourAnswerToTheQuestion