Вести журнал времени доступа к файлу - PullRequest
0 голосов
/ 06 марта 2009

Итак, у нас есть несколько (или более, никто не знает) приложений, написанных кем-то, кто уже ушел, эти приложения получают доступ к базам данных Microsoft Access, хранящимся на старом ПК этого разработчика, которые, в свою очередь, читают из нашей базы данных Production SQL. Теперь, чтобы отследить все эти программы и в какое время они запускаются, я хотел бы вести журнал времени доступа к файлам, это возможно сделать? Очевидно, что если бы я прочитал время доступа, я бы изменил его. Мы не можем полагаться на измененное время, поскольку некоторые базы данных Access являются просто связанными таблицами с базой данных SQL.

Предпочитаю делать это в C #, но это не имеет значения. Просто нужно отследить, что работает, где, как только я их найду, их можно изменить.

Спасибо.

1 Ответ

1 голос
/ 06 марта 2009

http://msdn.microsoft.com/en-us/library/system.io.filesystemwatcher.aspx

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);
}

}

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