问题 如何拦截对.NET程序中文件的访问


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


4407
2018-02-28 21:49


起源

我可以发誓这个问题刚刚被问到,但我找不到。 - John Saunders
你看过FileSystemWatcher类了吗?
FileSystemWatcher为我提供了后访问权限,我需要具有预访问权限 - FBSC


答案:


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

拦截文件访问权限不是您可以轻松完成的。

你可以写一个 文件系统过滤驱动,这是O / S将加载的非托管DLL 拦截文件或文件夹上的操作。但是,这不是一项微不足道的任务。

你想要实现什么,也许有一个更简单的选择?


7
2018-02-28 21:54





仅使用.net是不可能的


2
2018-02-28 22:09





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


1
2018-02-28 21:56





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


1
2018-03-01 16:00





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

  • 如果您需要阻止访问文件,那么安全性就是这样。然后,您可以捕获访问权限并将任务委派给更高权限的执行引擎。例如作为更高特权用户运行的服务。

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

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

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


0
2018-02-28 21:58



事实上,如果用户在列表中,我想更改输出的文件... - FBSC