【问题标题】:Keep a log of file access time记录文件访问时间
【发布时间】:2009-03-05 22:26:18
【问题描述】:

因此,我们有一些(或更多,没有人知道)由现在离开的人编写的应用程序,这些应用程序访问存储在这台开发人员旧 PC 上的 Microsoft Access 数据库,而这些数据库又从我们的生产 SQL 数据库中读取。 现在要跟踪所有这些程序,以及它们的运行时间,我想记录文件访问时间,这可能吗? 显然,如果我阅读访问时间,我会修改它。 我们不能依赖修改的时间,因为一些 Access 数据库只是链接到 SQL 数据库的表。

更喜欢在 C# 中执行此操作,但这没关系。 只需要跟踪运行的内容,一旦我找到它们,就可以对其进行修改。

谢谢。

【问题讨论】:

    标签: c# sql ms-access file


    【解决方案1】:

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

    }

    【讨论】:

    • 使用 FileSystemWatcher 类,您只能监控创建/更新/删除/重命名操作,我们不能使用该类来跟踪文件访问。
    猜你喜欢
    • 2018-01-03
    • 2014-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-22
    • 2020-11-17
    • 1970-01-01
    相关资源
    最近更新 更多