windows 中如何监控文件的打开操作,当一个文件被打开时,就能感知到? - V2EX
skylord

windows 中如何监控文件的打开操作,当一个文件被打开时,就能感知到?

  •  1
     
  •   skylord Nov 30, 2025 3893 views
    This topic created in 165 days ago, the information mentioned may be changed or developed.

    这个问题比较好的实现方式是,通过 Minifilter 文件过滤驱动来监控,但是公司的电脑全都没有管理员权限,没办法安装运行驱动,导致这个方案没法实现。 除此之外,使用 ReadDirectoryChangesW 函数也没办法监控到,windows 好像不更新 last access 时间。还有个 Windows 事件跟踪 (ETW),这个需要管理员权限也不行。 有没有什么不需要管理员权限的监控方案?

    27 replies    2025-12-01 21:20:17 +08:00
    oisadfo
        1
    oisadfo  
       Nov 30, 2025
    没有权限没法
    crab
        2
    crab  
       Nov 30, 2025
    微软提供的 Procmon 也要管理员权限。
    skylord
        3
    skylord  
    OP
       Nov 30, 2025
    @oisadfo 是啊,没有管理员权限就很蛋疼
    ysc3839
        4
    ysc3839  
       Nov 30, 2025 via Android
    怀疑是 X-Y Problem https://coolshell.cn/articles/10804.html
    建议直接说原始需求
    yulon
        5
    yulon  
       Nov 30, 2025
    没权限大概只能轮询文件的访问时间,不准,而且伤机械硬盘,固态还好
    beck8
        6
    beck8  
       Nov 30, 2025
    监控更改好实现,只监控个打开,貌似只能用一些奇技淫巧之类的。比如 linux 的 lsof
    julyclyde
        7
    julyclyde  
       Nov 30, 2025
    @beck8 lsof 只能看当前状态不能看“事件”
    beck8
        8
    beck8  
       Nov 30, 2025
    @julyclyde 所以是奇技淫巧,比对状态变化
    skylord
        9
    skylord  
    OP
       Nov 30, 2025
    @ysc3839 这个就是原始需求,公司要开发一个智能助手,有一个需求就是,感知到用户打开文件时,可以提示用户给文件做摘要总结
    charles0
        10
    charles0  
       Nov 30, 2025
    没有管理员权限基本上不能弄
    Leon6868
        11
    Leon6868  
       Nov 30, 2025
    @skylord #9 转换一下思路,需要做总结的文件一般是 PDF 和 Office 文件,所以监听常见的文档编辑软件和浏览器的窗口标题,然后查找相应的文件
    jptx
        12
    jptx  
       Nov 30, 2025
    @skylord #9 或者做成 office 插件的形式,让公司统一安装?
    ysc3839
        13
    ysc3839  
       Nov 30, 2025 via Android
    @skylord 用户打开文件然后提示的话,可以考虑用文件资源管理器的扩展来实现,印象中是可以分用户安装的,不需要管理员权限。
    这么做的话如果是在别的程序里打开可能检测不到,但也基本符合需求。
    codehz
        14
    codehz  
       Nov 30, 2025
    直接注册成所有文件的默认打开方式,打开前拦截一下就可以了()
    laminux29
        15
    laminux29  
       Nov 30, 2025
    你这需求肯定要管理员权限的,建议走正规流程,和上级说一下情况,让公司给你管理员权限。
    Ackvincent
        16
    Ackvincent  
       Dec 1, 2025
    @skylord hook 一下关键函数,队所有文件都监控的话肯定要在操作系统内核中做文章了。
    julyclyde
        17
    julyclyde  
       Dec 1, 2025
    @beck8 在动作之前、动作之后分别观察一次,结论是没动
    zhengfan2016
        18
    zhengfan2016  
       Dec 1, 2025 via Android
    当年 CIH 就是监听用户打开文件时候把自身写入文件的空白处的,后面微软学精了,严卡相关 hook 和内核的权限
    WuDiHaiTai
        19
    WuDiHaiTai  
       Dec 1, 2025
    如果你要用的只是一个应用,比如说,执行一个 exe ,有一种工具能够锁定提权 Administrator 或者 System ,但我不记得那个叫什么了。

    可以和 IT 描述一下,你有什么是必须有管理员权限才能用的,让他给你搞一下。我之前当 IT 的时候,只要这个软件我认识,我们就可以给用户搞这个操作。
    samli12
        20
    samli12  
       Dec 1, 2025
    不知道 ipguard 怎么做的这个,貌似有打开文件的审计功能
    skylord
        21
    skylord  
    OP
       Dec 1, 2025
    @all 感谢大家的建议,我会挨个试一下
    capgosen
        22
    capgosen  
       Dec 1, 2025
    找最近使用的项目,路径: %appdata%\Microsoft\Windows\Recent
    dosmlp
        23
    dosmlp  
       Dec 1, 2025
    @samli12 当然是驱动啊
    jmpcool
        24
    jmpcool  
       Dec 1, 2025
    ReadDirectoryChangesW 为啥监控不到文件打开? FILE_NOTIFY_CHANGE_LAST_ACCESS 这个标志不行吗?监控文件所在目录 过滤被监控文件就行啦,记住使用异步通知也就是完成端口那套 最稳定
    skylord
        25
    skylord  
    OP
       Dec 1, 2025
    @jmpcool windows 默认不更新 last access 时间,开启更新需要管理员权限,这个 last access 时间更新也不及时
    skylord
        26
    skylord  
    OP
       Dec 1, 2025
    @WuDiHaiTai 安装运行 Minifilter 驱动需要管理员权限
    WuDiHaiTai
        27
    WuDiHaiTai  
       Dec 1, 2025
    @skylord #26 安装就是打申请咯,只要软件是可以用于商用的,没有版权和安全风险就可以给安装。至于运行就是我说的这个办法,只需要 IT 操作一次之后,之后每次使用都是管理员启动。
    About     Help     Advertise     Blog     API     FAQ     Solana     4428 Online   Highest 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 78ms UTC 05:26 PVG 13:26 LAX 22:26 JFK 01:26
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86