阻止文件创建

时间:2013-06-06 08:42:21

标签: c windows filter driver minifilter

我必须编写一个功能,阻止用户在桌面上创建文件(Windows XP的快捷方式文件(* .lnk)和目录除外)。 经过一些研究后,我得出结论,这可以使用文件系统过滤器驱动程序或微型驱动程序完成。更改NTFS权限不起作用,因为无法加载/保存漫游配置文件。

我查看了DDK样本。例如cancelSafe。他们取消了I / O,但这不是我想要的。我见过阻止访问受感染文件的防病毒程序,操作系统返回错误代码5:访问被拒绝。

我想要完全相同的行为。那么如何在过滤器驱动程序中实现这一目标呢?

1 个答案:

答案 0 :(得分:4)

  1. 您需要编写minifilter driver并附加到存在桌面文件夹的相应卷。
  2. 在minifilter中,过滤IRP_MJ_CREATE
  3. 在IRP的PreOperation回调中,检查文件路径,如果它在桌面文件夹路径下失败了IRP并且没有将其传递到堆栈中。
  4. IoStatus.Status中,通过在操作前回调中完成IRP并设置适当的状态,IRP可能会失败。更多信息,请访问Completing an I/O Operation in a Preoperation Callback Routine