Hola Raul.
This is really strange because in Babel agent we do a similar query in WQL (WMI Query Language), which is:
"SELECT * FROM Win32_Product"
I think there is a problem about the way Windows holds and gets that info. I attach a screenshot that shows all the matches elements of that query (using WMI Tools, the official application to do that kind of stuff) and the windows system "Add or remove applications". You may notice a difference because some applications are not shown in the query, although they are shown in the windows app. Maybe Office 2007 is somewhere else, but you can see Office 2003 in the elements of the query.

I'm not a Windows expert, so if you know a way to get all those missing elements, I'll appreciate it.
Note: We do not use windows libraries because it won't let us to release the agent as GPL. That's the reason we have to use open source libraries to do these kind of queries. Anyway, it works perfectly, the only issue is that the code is a bit ugly.