12

我需要在系统尝试访问文件时进行拦截,并在它发生之前做一些事情。

4

5 回答 5

8

您可以使用FileSystemWatcher- 但这不会让您拦截事件并事先做事 - 它只会在特定文件或目录以某种方式受到影响之后通知您。

拦截文件访问不是一件容易的事。

您可以编写一个文件系统过滤器驱动程序,它是一个非托管 DLL,操作系统将加载它,它可以拦截对文件或文件夹的操作。然而,这不是一项微不足道的任务。

你想达到什么目标,也许有一个更简单的选择?

于 2010-02-28T21:54:17.013 回答
2

检查http://easyhook.codeplex.com/,它直接为您提供 c# c++ 之类的 dll 方法覆盖。

于 2010-03-01T16:00:51.080 回答
2

仅使用 .net 是不可能的

于 2010-02-28T22:09:16.617 回答
1

这里有一个非常相似的线程:如何防止使用 Windows 服务创建文件夹?. 它可能会提供更多见解,但@LBushkin 已经提供了相同的结论。

于 2010-02-28T21:56:21.903 回答
0

有趣的问题。什么样的访问?读取、写入、删除、复制?

  • 如果您需要阻止对文件的访问,那么安全性就是最好的方法。然后,您可以捕获访问权限并将任务委托给更高特权的执行引擎。例如以更高特权用户身份运行的服务。

  • 如果你想停止系统级访问,那么你需要一个IFS 过滤器

  • 如果所有访问都是通过您的代码进行的,那么我建议使用一个阻止访问的库。

  • 正如其他人所提到的,有 FileSystemWatcher,但我认为这个帖子访问之前没有。

于 2010-02-28T21:58:29.923 回答