V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
skylord
V2EX  ›  Windows

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

  •  1
     
  •   skylord · 5 天前 · 2921 次点击

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

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

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