I need to intercept when the system tries to access to a file, and do something before it happens.
Interesting question. What kind of access? Read, write, delete, copy?
If you need to prevent access to a file then the security would be the way. Then you can capture the access and do delegate the task to a higher privileged execution engine. Such as a service running as higher privileged user.
If you want to stop system level access then you'll need an IFS filter.
If all access is via your code, then I'd suggest a library that prevent's access.
And as other people have mentioned, there is the FileSystemWatcher, but I think this post access not before.