簡體   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