All of the uninstall information for applications are kept in the registry in
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall
and (if you are running a 64 bit OS)
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall
If you open these keys and look at all the entry values, you will see the applications that are installed on the system.
If you block ALL access to these Uninstall keys or one of it's subkeys (per application), you will not be able to uninstall the application from Add/Remove programs, because it will not be listed in add/remove programs.
You mentioned that you want to have access to the list in add/remove programs, but still block the ability to remove the application. For that, I would not allow the Windows Installer service to start:
Service Options > Alternative Privilege Lists > Specify Services that should not start > %systemroot%\system32\msiexec.exe
That will allow you to still view the list of installed apps, but not allow any applications that depend on the Windows Installer service to be removed. It also will not allow anything to be installed. Note that this should be tested in your environment and tuned properly, because certain processes or services may depend on this (like SCOM, or other 3rd party patching tools). It may be necessary to further tune the policy to allow tools like this to start msiexec.exe.
To alert using detection, you would want to either rely on the IPS policy above to alert you, or use detection to monitor creation/modification/deletion of the
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\*
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall*
registry keys.
[Edit: Grammer, added 64bit OS]