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

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

  •  1
     
  •   skylord · 11 天前 · 3105 次点击

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

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

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