An application produces some XML (which can be deserialized into a .NET object if preferred) which contains rules/conditions for detecting whether something is present on a computer or not.
The job is to create an engine that runs through these (potentially multiple) rules/conditions and returns a single definitive boolean value for all rules.
The rules themselves are limited to four categories:
Files Folders Registry MSI Installers
Each of these categories may have something as simple as exists/does not exist or more complex like date modified must be higher or equal than specified value.
I've included an example XML with most (but not all) conditions the engine needs to support. Again the XML can also be deserialized into a managed object so working with the XML format is not a must (and preference would be that the XML is not used directly, rather the managed object)
Please specify how you would tackle this issue to create an engine that is capable of handling all different conditions/rules.