With James' help, I managed to get the uninstaller patch done up right, however, I am running into a small problem.
The way I had originally done the array at the top of FetchUninstallInformation was not correct, however it allowed for proper functionality.
HKEY hkeyroot[numrootkeys]; hkeyroot[0] = HKEY_CURRENT_USER; hkeyroot[1] = HKEY_LOCAL_MACHINE;
With that code, I can open the uninstaller, and see all of the uninstall entries.
With the following, correct code:
HKEY hkeyroot[] = { HKEY_CURRENT_USER, HKEY_LOCAL_MACHINE };
When I open the uninstaller, the first uninstall entry is not shown (and from what I can tell in the additional traces that I put in, looks like it is not even being found). However, when I type something into the filter editbox, like the first letter of that entry that is missing, it appears.
The same function is being called with the dialog first opens as is being called when the dialog refreshes.
If I type into the filter field, and then select something and hit uninsall, and then cancel the uninstall, the window updates again, and the first entry disappears again.
Like I said, the UNINSTALL calls UpdateList, the INITDIALOG calls UpdateList, and the FILTER calls UpdateList as well, however in UNINSTALL and INITDIALOG cases the first entry does not appear.
I think the problem is somewhere else in wine, but I cannot confirm this right now without doing a trace+all, and I am leaving work for the weekend..
The patch and registry file I am using are attached if anyone wants to look into this while I am gone.