skylord
V2EX  ›  Windows

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

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

    可以和 IT 描述一下,你有什么是必须有管理员权限才能用的,让他给你搞一下。我之前当 IT 的时候,只要这个软件我认识,我们就可以给用户搞这个操作。
    samli12
    samli12
    Dec 1, 2025
    20
    不知道 ipguard 怎么做的这个,貌似有打开文件的审计功能
    skylord
    skylord
    OP
    Dec 1, 2025
    21
    @all 感谢大家的建议,我会挨个试一下
    capgosen
    capgosen
    Dec 1, 2025
    22
    找最近使用的项目,路径: %appdata%\Microsoft\Windows\Recent
    dosmlp
    dosmlp
    Dec 1, 2025
    23
    @samli12 当然是驱动啊
    jmpcool
    jmpcool
    Dec 1, 2025
    24
    ReadDirectoryChangesW 为啥监控不到文件打开? FILE_NOTIFY_CHANGE_LAST_ACCESS 这个标志不行吗?监控文件所在目录 过滤被监控文件就行啦,记住使用异步通知也就是完成端口那套 最稳定
    skylord
    skylord
    OP
    Dec 1, 2025
    25
    @jmpcool windows 默认不更新 last access 时间,开启更新需要管理员权限,这个 last access 时间更新也不及时
    skylord
    skylord
    OP
    Dec 1, 2025
    26
    @WuDiHaiTai 安装运行 Minifilter 驱动需要管理员权限
    WuDiHaiTai
    WuDiHaiTai
    Dec 1, 2025
    27
    @skylord #26 安装就是打申请咯,只要软件是可以用于商用的,没有版权和安全风险就可以给安装。至于运行就是我说的这个办法,只需要 IT 操作一次之后,之后每次使用都是管理员启动。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   894 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 106ms · UTC 19:54 · PVG 03:54 · LAX 11:54 · JFK 14:54
    ♥ Do have faith in what you're doing.