嘗試 Hook DeleteFile 發現不生效,因為 Windows 內部刪除文件最終調用的是**未公開的內核 API**。
NTSTATUS NtSetFileInformation(
HANDLE FileHandle,
FILE_INFORMATION_CLASS FileInformationClass, // FileDispositionInformation
PVOID FileInformation,
ULONG FileInformationLength
);
FileInformationClass = FileDispositionInformation (0x0D)。FileInformation 指向 FILE_DISPOSITION_INFORMATION 結構,DeleteFile = TRUE 表示刪除。DeleteFile、SHFileOperation、CMD del、資源管理器刪除)最終都會調用此函數。ntdll.dll!NtSetFileInformation(需處理 x86/x64、Wow64)。IRP_MJ_SET_INFORMATION / FileDispositionInformation 回調中攔截,更穩定、權限更高。注意:Hook 系統 API 屬高風險操作,需簽名驅動、測試充分,否則導致系統不穩定。