Eine pauschale Lösung gibt es selbstverständlich nicht, da unter Windows leider jede Software anders installiert und andere Spuren hinterlässt - einheitlich und damit mit einer simplen Funktion auslesbar ist das leider nicht.
Die Idee von Klaus01 ist sicher ein Anfang, damit kriegst du schonmal alle Programme, die einen korrekten Uninstall-Eintrag hinterlassen. Du musst aber dann bedenken, dass etliche Programme das auch nicht tun und den Uninstaller (sofern vorhanden

) nur im Startmenü anbieten ...