【问题标题】:Detect when a user opens a file [duplicate]检测用户何时打开文件[重复]
【发布时间】:2016-01-25 17:49:16
【问题描述】:

我正在寻找能够检测用户何时打开文件的东西(很像防病毒软件),我一直在寻找,但我能找到的只是用户创建/删除/修改文件的时间在特定路径上

【问题讨论】:

  • 我不能从中得到太多:/
  • @UweKeim OP 要求不同的东西。当用户打开文件时。
  • @UweKeim 我认为 FileSystemWatcher 仅在更改、创建、删除和重命名时触发。我认为它不会在打开/锁定时发出通知。

标签: c# visual-studio file


【解决方案1】:

您可以使用 C# FileWatcher - 侦听文件系统更改通知并在目录或目录中的文件更改时引发事件。

示例: http://matijabozicevic.com/blog/csharp-net-development/csharp-monitor-directory-activity-using-fileSystemWatcher-class

Using FileSystemWatcher to monitor a directory

MSDN: https://msdn.microsoft.com/en-us/library/system.io.filesystemwatcher(v=vs.110).aspx

FileSystemWatcher watcher;

private void watch()
{
   watcher = new FileSystemWatcher();
  watcher.Path = path;
  watcher.NotifyFilter = NotifyFilters.LastAccess | NotifyFilters.LastWrite
                     | NotifyFilters.FileName | NotifyFilters.DirectoryName;
  watcher.Filter = "*.*";
  watcher.Changed += new FileSystemEventHandler(OnChanged);
  watcher.EnableRaisingEvents = true;
}

private void OnChanged(object source, FileSystemEventArgs e)
{
  //Copies file to another directory.
}

【讨论】:

  • 它有 onchanged() oncreated() ondeleted() ,但是当用户打开文件时什么都没有?
  • NotifyFilters 可以帮助我想......让我检查......
  • 通过 NotifyFilters.LastAccess 我们还可以检测到文件打开事件。您检查了吗?
  • 不,你有一个简单的例子吗?
  • 这里提到的截图就够了。您可以直接添加到您的解决方案中并检查它..
【解决方案2】:

尝试使用FileSystemWatcher.Changed 事件:https://msdn.microsoft.com/en-us/library/system.io.filesystemwatcher.changed(v=vs.110).aspx

为了检测何时打开,您必须将NotifyFilter 属性设置为NotifyFilters.LastAccess(这将触发Changed 事件,因为文件的LastAccess 属性已更改)。

我从来没有用它来监控整个硬盘,所以 YMMV。

【讨论】:

  • 问题是如何检测文件何时“打开”。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-27
  • 2023-04-10
  • 1970-01-01
  • 2014-06-06
  • 1970-01-01
  • 2015-08-30
  • 2019-03-30
相关资源
最近更新 更多