FileSystemWatcher solía mirar la carpeta / archivo abierto

He navegado por todos lados pero no puedo encontrar ninguna información sobre lo que estoy buscando, si hay otra publicación que ya repasa esto, me disculpo.

Estoy buscando ayuda con el código que controlará una carpeta específica para cuando otra persona abra la carpeta o cuando se abra un archivo debajo de dicha carpeta. En este punto puedo ver cuando un usuario abre y modifica cualquier archivo, pero si simplemente lo abre para verlo, no se produce un evento, incluso cuando agrego LastAccessed. Cualquier información o ayuda sería apreciada.

El nombre de la carpeta es C: \ Junk

Código en C # 4.0:

    [PermissionSet(SecurityAction.Demand, Name = "FullTrust")]
    public static void Run()
    {


        FileSystemWatcher watcher = new FileSystemWatcher();
        watcher.Path = @"C:\";
        watcher.NotifyFilter = NotifyFilters.LastAccess | NotifyFilters.LastWrite
           | NotifyFilters.FileName | NotifyFilters.DirectoryName;
        watcher.Filter = "junk";

        // Add event handlers.
        watcher.Changed += new FileSystemEventHandler(OnChanged);
        watcher.Created += new FileSystemEventHandler(OnChanged);
        watcher.Deleted += new FileSystemEventHandler(OnChanged);
        watcher.Renamed += new RenamedEventHandler(OnRenamed);
        watcher.IncludeSubdirectories = true;
        watcher.EnableRaisingEvents = true;

        // Wait for the user to quit the program.
        Console.WriteLine("Press \'q\' to quit the sample.");
        while (Console.Read() != 'q') ;
    }

    // Define the event handlers. 
    private static void OnChanged(object source, FileSystemEventArgs e)
    {
        // Specify what is done when a file is changed, created, or deleted.
        Console.WriteLine("File: " + e.FullPath + " " + e.ChangeType);
    }

    private static void OnRenamed(object source, RenamedEventArgs e)
    {
        // Specify what is done when a file is renamed.
        Console.WriteLine("File: {0} renamed to {1}", e.OldFullPath, e.FullPath);
    }