2017-01-30 2 views
0

Ich habe mich gefragt, ob es eine Möglichkeit gibt, festzustellen, ob ein Prozess eine Datei löscht oder verschlüsselt. Ich versuche, eine Anti-Ransomware-Anwendung in C# zu erstellen, also habe ich mich gefragt, ob jemand helfen könnte.Gibt es eine Möglichkeit festzustellen, ob ein Prozess eine Datei in C# verschlüsselt oder löscht?

Irgendwelche Vorschläge?

+0

A [Filesystemwatcher] (https://msdn.microsoft.com/en-us/library/system.io.filesystemwatcher (v = vs.110) aspx) können Sie ein Verzeichnis für Änderungen wie gelöschte Dateien sehen. Ich würde vermuten, dass es keinen einfachen Weg gibt (und sicher keine narrensichere Methode), um zu erkennen, dass eine Datei verschlüsselt wird. – adv12

Antwort

0

Sie möchten sich die Klasse FileSystemWatcher ansehen.

Aus der MSDN-Seite:

using System; 
using System.IO; 
using System.Security.Permissions; 

public class Watcher 
{ 

    public static void Main() 
    { 
    Run(); 

    } 

    [PermissionSet(SecurityAction.Demand, Name="FullTrust")] 
    public static void Run() 
    { 
     string[] args = System.Environment.GetCommandLineArgs(); 

     // If a directory is not specified, exit program. 
     if(args.Length != 2) 
     { 
      // Display the proper way to call the program. 
      Console.WriteLine("Usage: Watcher.exe (directory)"); 
      return; 
     } 

     // Create a new FileSystemWatcher and set its properties. 
     FileSystemWatcher watcher = new FileSystemWatcher(); 
     watcher.Path = args[1]; 
     /* Watch for changes in LastAccess and LastWrite times, and 
      the renaming of files or directories. */ 
     watcher.NotifyFilter = NotifyFilters.LastAccess | NotifyFilters.LastWrite 
      | NotifyFilters.FileName | NotifyFilters.DirectoryName; 
     // Only watch text files. 
     watcher.Filter = "*.txt"; 

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

     // Begin watching. 
     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); 
    } 
} 
+0

Danke! Werde es versuchen. – BytePhoenix

Verwandte Themen