I've got a C++ software (not managed C++), the goal of which is to control certain actions of other applications on client's machine and send the alert to server. Once this action happens, software get application exe's path and sends. My modification task is to get application's DisplayName (like it is in the "Programs and Features" folder) and send it.
In the end, client machine's OS version is unknown, all I know is that it is Windows.
By reading Windows registry I could get display names of all those applications that can be seen in the "Programs and Features" folder. I used these keys:
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall
HKEY_USERS\<User_sid>\Software\Microsoft\Windows\CurrentVersion\Uninstall
But there are few applications that have their installation location written in the registry. In my case, it is about 1 application of 6 has its installation location written. Using Vista's functions SHGetKnownFolderItem and SHGetKnownFolderPath is not helpful because "Programs and Features" is the virtual folder.
Is there any way to learn "Programs and Features" implementation? Or perhaps another available option?