Monitor changes in specific directories between two points in time

Job ID: 36746651

Budget: $30 – $250 USD

Implement in Delphi 11 or compatible a code that has two functions:
1) SnapshotStart() which takes as an input a list of directories and/or registry paths. For example, ['c:\program files\', 'c:\windows\', 'hkey_classes_root', 'hkey_local_machine\software\']. We shall call these the input paths.

2) SnapshotEnd() which takes as an input a list of search terms. For example, ['foobar', 'qwerty']. We shall call these the search terms.

When SnapshotStart() is called, it will create in memory a data structure of the contents of the given directories and registry paths within the input paths, one level deep.

When SnapshotEnd() is called, it will return a listing within those input paths, one level deep, of any: a) New files, b) new folders, c) new registry keys, d) new registry entries whose name or in case of registry entry, whose value, contains any of the given search terms.

For example, if I run SnapshotStart() with input paths of ['c:\temp\', 'hkey_local_machine\software\'], then I create a file called "c:\foobarlol.txt" and registry key "hkey_local_machine\software\qwerty1\", then call SnapshotEnd() with search terms ['foobar', 'qwerty'], the output shall be:
c:\foobarlol.txt
hkey_local_machine\software\qwerty1\

Because these two new items were created after the SnapshotStart() call, and which match the given search terms.

With this project, please also deliver a simple VCL demo app that uses this code. The UI makes no difference to me, as long as it allows me to quickly test to confirm your code works. The demo app should contain some debug logging, for example to a TMemo on a form, to allow you to debug any problems that I might report to you during the testing phase.
Related categories: Delphi Software Architecture