You can register to be informed of any changes in the windows file system. You can filter based on a filename, or type of event such as delete create, modify.
C# Code
Add the following include:
using System.IO;
Create a windows application and in a form place this code in the Form Load event:
FileSystemWatcher fsw = new FileSystemWatcher(); fsw.Path = "c://"; fsw.Filter = "*.*"; fsw.NotifyFilter = NotifyFilters.LastAccess | NotifyFilters.LastWrite | NotifyFilters.FileName | NotifyFilters.DirectoryName; //Setup Events fsw.Changed += new FileSystemEventHandler(FileChanged); fsw.Created += new FileSystemEventHandler(FileCreated); fsw.Deleted += new FileSystemEventHandler(FileDeleted); fsw.Renamed += new RenamedEventHandler(FileRenamed); //Start fsw.EnableRaisingEvents = true;
Add these methods to the forms as well:
public static void FileChanged(object source, FileSystemEventArgs e) { Console.WriteLine("File {0} was Changed.",e.FullPath); } public static void FileCreated(object source, FileSystemEventArgs e) { Console.WriteLine("File {0} was Created.",e.FullPath); } public static void FileDeleted(object source, FileSystemEventArgs e) { Console.WriteLine("File {0} was Deleted.",e.FullPath); } public static void FileRenamed(object source, RenamedEventArgs e) { Console.WriteLine("File {0} was renamed to {1}", e.OldFullPath, e.FullPath); }
Running the Example
Run your application and ensure you can see the Ouput window to view the console.write messages. Then create a new file in c:/, you will notice a message get sent to the console. Then delete the file and you will get another message. C# makes it easy to capture events from the OS like this, perfect for monitoring