Q: How to monitor system-wide "file name change event" by windows explorer effectively in c# It is only needed to track if file is renamed in windows explorer. Is there any way to track the change effectively? Is it possible to "hook" a program to windows explorer to be effectively?

A: You can use FileSystemWatcher in System.IO
static void Main()
    {
        FileSystemWatcher w = new FileSystemWatcher(@"C:\temp");

        w.Renamed += w_Renamed;
        w.EnableRaisingEvents = true;
        // Wait for the user to quit the program.

        Console.WriteLine("Press \'q\' to quit the sample.");
        while (Console.Read() != 'q') ;

    }

    static void w_Renamed(object sender, RenamedEventArgs e)
    {
       //Add your logic here
    }

Beware that there is some limitations to FileSystemWatcher http://blogs.msdn.com/b/winsdk/archive/2015/05/19/filesystemwatcher-follies.aspx
More info at https://msdn.microsoft.com/en-us/library/system.io.filesystemwatcher.changed(v=vs.110).aspx
