I know this question is somewhat subjective, but I think it might be a valid question to ask.
I want to create a program that watches folders on a file server. The program itself runs on the server, so network folders don't have to be monitored. I want to get an event in case a folder/file gets deleted, moved, created and such. These information will be written to the disk (where the network users can't access it). I would need the name of the file, and the user who caused it, and maybe more info, but that's the minimum requirement for now.
In C# we can use the FileSystemWatcher-Class, which is very unreliable. (Examples for that can be found around StackOverflow a lot.)
We also could use the Auditing Feature of Windows 7 Professional (which I am running on), but this also gives many, many confusing entries in the system log. I just can't get reliable information from those.
Third, one could just poll the files and compare. This is kind of the brute force attack I would like to omit. Also, the other methods might be almost realtime, this one is not.
So, I could think of combining 1. and 3., and maybe even 2., too, but what is the clean, the good way to do this?