2009-03-05 8 views
0

So haben wir ein paar (oder mehr, niemand weiß) Apps von jemandem geschrieben, der jetzt verlassen hat, greifen diese Anwendungen auf Microsoft Access-Datenbanken auf diesem alten PC-Entwickler, die wiederum von lesen unsere Produktions-SQL-Datenbank. Jetzt, um alle diese Programme zu verfolgen, und zu welcher Zeit sie ausgeführt werden, möchte ich ein Protokoll über eine Dateizugriffszeit zu halten, ist dies möglich? Offensichtlich, wenn ich die Zugriffszeit lese, würde ich es ändern. Wir können uns nicht auf die modifizierte Zeit verlassen, da einige Access-Datenbanken nur Tabellen mit der SQL-Datenbank verknüpft sind.Halten Sie ein Protokoll der Dateizugriffszeit

Bevorzugen Sie dies in C#, aber es spielt keine Rolle. Ich muss nur aufspüren, was wo läuft, sobald ich sie gefunden habe, können sie geändert werden.

Danke.

Antwort

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

}