如何从内核模式中删除文件?

时间:2015-01-29 10:58:50

标签: c windows driver minifilter kernel-mode

我有一个minifilter(内核模式)。我想从内核模式中删除具有特定路径(\ Device \ HarddiskVolume1 \ file.txt或C:\ file.txt)的文件

有没有办法做到这一点?

更新:20150130

我尝试使用ZwDeleteFile routine作为Harry Johnston说。这些是我的代码:

RtlInitUnicodeString(&gRedirectFullFilePath, "\\Device\\HarddiskVolume1\\test.txt"); // This file existed
InitializeObjectAttributes(&ObjectAttribute, &gRedirectFullFilePath, OBJ_CASE_INSENSITIVE, NULL, NULL); 
status = ZwDeleteFile(&ObjectAttribute);

但它崩溃了我的系统。我的代码有什么问题吗? =>修复(这是答案)

谢谢!

4 个答案:

答案 0 :(得分:3)

ZwDeleteFile routine

  

ZwDeleteFile例程删除指定的文件。

答案 1 :(得分:1)

通过常规方法,无法从内核模式中删除文件,即从设备驱动程序中删除文件。

非常不鼓励这种做法或想法。

答案 2 :(得分:1)

FltSetInformationFile()功能与FileDispositionInformation类一起使用。

答案 3 :(得分:0)

有很多方法可以帮助您完成此操作,如Microsoft的minifilter DeleteSample中所示。

  1. FILE_DELETE_ON_CLOSE标志,您可以在您选择的CreateFile例程中使用。
  2. 设置FileDispositionInformation
  3. 另请注意新推出的FILE_DISPOSITION_INFORMATION_EX
  4. 研究样本后,一切都应该更加清晰。 另请注意,您可以执行transactioned删除操作,也可以按文件ID删除文件。

    祝你好运。