繁体   English   中英

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

[英]How to delete a file from kernel-mode?

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

有什么办法吗?

更新:20150130

我尝试使用ZwDeleteFile例行作为哈利·约翰斯顿说。 这些是我的代码:

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

但它崩溃我的系统。 这有什么错我的代码? =>固定的(这是回答)

谢谢!

ZwDeleteFile例程

ZwDeleteFile例程删除指定的文件。

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

不鼓励这种做法或想法。

使用FltSetInformationFile()与函数FileDispositionInformation类。

如Microsoft的微型筛选器DeleteSample所示,有许多方法可以执行此操作。

  1. 可以在您选择的CreateFile例程中使用的FILE_DELETE_ON_CLOSE标志。
  2. 通过设置FileDispositionInformation
  3. 还要注意新引进FILE_DISPOSITION_INFORMATION_EX

研究样本后,一切都应该更加清晰。 还要注意,您可以进行事务删除,也可以通过文件ID删除文件。

祝好运。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM