Как проверить, если файл кто-то просматривает / открывает файл? - PullRequest
0 голосов
/ 25 апреля 2020

Здесь необходимо отслеживать конфиденциальные файлы в определенной папке, используя C#. Допустим, у меня есть «C: / Secrets», программа должна отслеживать эту папку на предмет любых прав на чтение или данных, копируемых из этой папки.

Я пытался использовать FileSystemWatcher Class , но, насколько я понимаю, мы можем отслеживать только измененные, созданные, удаленные события, используя это. Ниже приведен пример кода из документации.

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

public class Watcher
{
    public static void Main()
    {
        Run();
    }

    [PermissionSet(SecurityAction.Demand, Name = "FullTrust")]
    private static void Run()
    {
        string[] args = 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.
        using (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 += OnChanged;
            watcher.Created += OnChanged;
            watcher.Deleted += OnChanged;
            watcher.Renamed += 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: {e.OldFullPath} renamed to {e.FullPath}");
}

Как мы можем контролировать папку для доступа на чтение? И можно ли контролировать действие копирования?

1 Ответ

0 голосов
/ 25 апреля 2020

использовать File.GetLastAccessTime

Вот ссылка на документацию: - https://docs.microsoft.com/en-us/dotnet/api/system.io.file.getlastaccesstime?view=netcore-3.1

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...