Matt,
Yes, inventory does check the registry for software install state. It also checks a few more things.
It all boils down to how you installed this software application. If you installed the software using a managed software delivery policy, with a compliance scan, you will have the issue that HighTower detailed. If you did not install this software through a managed software delivery policy, inventory scans should be picking up the installed or not state.
Remediation:
- Modify the managed software delivery policy compliance scan to daily.
- Set the remediation action to remediate on a schedule for 1/1/2030.
The remediation steps I provided assume you're using a compliance rule on your software resource. Such as MSI product code, or some other method that checks if the software is installed or not. You could do a registry key exists rule.
Steps to reproduce:
Machine A:
- Install Reflections using a managed software delivery policy. The software resource should have a compliance check set, such as the MSI product code.
- Run an inventory scan. Delta or Full inventory does not matter.
- Check the SoftwareCache.xml file is populated with installed state.
- SMP server reports should now show software as installed.
- Remove software from machine A.
- Run an inventory scan. Delta or Full inventory does not matter.
- Notice SoftwareCache.xml is not updated. Your reports should also show the software as installed, although it's been removed.
Machine B:
- Install Reflections using the manufacturers installer manually on machine B.
- Run an inventory scan. Delta or Full inventory does not matter.
- Check the SoftwareCache.xml file is populated with installed state.
- SMP server reports should now show software as installed.
- Remove software from machine B.
- Run an inventory scan. Delta or Full inventory does not matter.
- Notice SoftwareCache.xml IS updated.
- You can wash, rinse, and repeat this process on machine B and each time you should see accurate installed results.
Further Details:
When a compliance check runs on a client it will report the results back up to the SMP server in the form of an event. This will then create an entry in the Inv_InstalledSoftware table for the software resource. If the compliance check found the software installed it populates the installflag column with a 1. If the compliance check finds the software not installed it populates the installflag with a 0.
At this point software management solution seems to “own” this inventory. The compliance scan is the only mechanism that can now update this table. If you remove the software resource from the client, you could set your managed software policy to just check compliance and run remediation far into the future. When the client runs this compliance check it will send the compliance event up to the SMP for this software as not installed (installflag=0) and properly update the table.
Inventory solution seems to “own” the inventory reporting only if you install the software resource through the software manufacturers installer and not through a managed software policy. You can then freely remove the application from the client, run an inventory scan, and the softwarecache.xml is updated properly. Therefore, updating the installflag=0 in the database.