You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何使用Windows内置压缩按钮时IRP_MJ_WRITE未触发?

Windows文件过滤驱动检测系统压缩操作问题

我正在开发Windows文件过滤驱动,目标是检测系统中的文件压缩操作。具体方案是在微过滤驱动中监听IRP_MJ_WRITE请求,通过计算熵值判断文件是否被压缩。但使用系统内置压缩按钮时,预期会触发的IRP_MJ_WRITE请求并未被我的驱动检测到。

以下测试代码执行压缩操作时,可正常触发IRP_MJ_WRITE:

ZipArchive zip = ZipFile.Open("C:\Temp\test.zip", ZipArchiveMode.Create);
zip.CreateEntryFromFile("C:\Temp\test.txt", Path.GetFileName("C:\Temp\test.txt"));
zip.Dispose();

此外,使用系统内置tar命令进行压缩时,也能触发IRP_MJ_WRITE。

更新

已找到根本原因:IRP_MJ_WRITE实际会被触发,未检测到是因为设置了路径过滤——仅关注特定文件夹路径,若IRP_MJ_WRITE未发生在该路径下,就返回FLT_PREOP_SUCCESS_NO_CALLBACK。

系统内置压缩按钮的执行流程为:先将压缩数据写入AppData\Local\Temp\xxxxx路径下的临时文件,之后在目标特定文件夹创建快捷方式链接。示例如下:

  • C:/MyFolder:测试内置压缩按钮的目标文件夹
  • C:/MyFolder/test.txt:待压缩文件
    系统会将压缩数据写入AppData\Local\Temp\xxxxx,完成后删除该临时文件。

内容的提问来源于stack exchange,提问作者user3365407

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 04:34:52