Here's how I do it ..
1) Find a registry entry that identifies your software and add that to be scanned in your config. (seeing Lansweeper's example of using the software table above makes me wonder if that could be used instead).
2) Write a report that lists all the computers
that have it installed.
3) Write another report using the computers table that finds all computers that are in the computer's table but not in the table that was created as part of the report in (2).
Example ... Finding all computers that do not have TrendMicro Antivirus installed:
1) Registry entry = HKEY_LOCAL_MACHINE\SOFTWARE\TrendMicro\PC-cillinNTCorp\CurrentVersion
2) report that finds all computers where TrendMicro is installed. Named TrendMicroIsInstalled
Select tblRegistry.Computername
From tblRegistry
Where tblRegistry.Regkey Like 'HKEY_LOCAL_MACHINE\SOFTWARE\TrendMicro\PC-cillinNTCorp\CurrentVersion'
And Not tblRegistry.Value Is Null
3) Report that uses above to find all in Computers that are not in above. Named TrendMicroIsNotInstalled
Select dbo.tblComputers.Computername, dbo.tblComputers.Username, dbo.tblComputers.Lastseen, dbo.tblComputers.Lasttriggered, dbo.tblComputers.LastScheduled, dbo.tblComputers.LastActiveScan, dbo.tblComputers.LastknownIP
From dbo.tblComputers
Where dbo.tblComputers.Computername Not In (Select dbo.web30repTrendMicroIsInstalled.Computername From dbo.web30repTrendMicroIsInstalled)
Notes:
You could skip the first "IsInstalled" report and just embed that select statement in the In clause of the "NotInstalled" report. I like having both, though, in case I ever want to look and verify that a specific computer is registered as having it installed.
As stated above, the software table may be a more efficient method than finding a registry key to scan for.
A pair of these reports would have to be written for each software package you want to monitor for.