FileSystemWatcher does not observes changes in symbolic links targets and only way how to do that is to follow them also.
First we set up main FileSystemWatcher:
static void Main(string args)
And second part is to watch newly created symbolic links
static void watcher_Created(object sender, FileSystemEventArgs e)
FileSystemWatcher watcher = new FileSystemWatcher();
string path = JunctionPoint.GetTarget(e.FullPath);
For finding target of Symbolic links is used JunctionPoint library, which basically uses pInvoke from links below. Note, that that library does not works without changes for sybolic links, because it works only with reparse points. Problem with that library is that works only with reparse points and symbolic links uses different structure REPARSE_DATA_BUFFER (an extra field Flags) and also does not identifies correctly symbolic link reparse tag returned from DeviceIoControl function.
In attached sample is corrected version.
JunctionPoint library (changed)