【问题标题】:How do you determine the last process to modify a file?您如何确定修改文件的最后一个过程?
【发布时间】:2009-05-05 02:16:12
【问题描述】:

我知道如何获取最后修改文件的用户,但 Windows 是否也跟踪进行修改的进程?如果是这样,是否有用于查找的 API?

【问题讨论】:

    标签: c# .net windows winapi


    【解决方案1】:

    没有。没有记录。

    您可以在特定文件夹上启用对象访问审核(我不建议在通用文件系统上使用)。请参阅此post 并谨慎使用!

    您也许可以使用 .NET 的 FileSystemWatcher 类。

    【讨论】:

      【解决方案2】:

      Windows 不会跟踪修改文件的进程。您最好的希望是积极观看您感兴趣的文件,并在应用程序打开它们时记录下来。我见过执行此操作的应用程序(例如 Sysinternals FileMon),但不知道如何完成它。

      【讨论】:

        【解决方案3】:

        如果您想确定在程序运行期间修改文件的进程,您可以使用 Windows API 或微过滤器驱动程序来跟踪系统上的每个进程在做什么(类似于使用 Sysinternals FileMon 和自定义过滤器,正如 Boo 指出的那样),但这仅适用于“捕获”程序的运行时。然而,一旦文件被修改,所有的痕迹都消失了。

        【讨论】:

          【解决方案4】:

          您能否使用 Windows security auditing 记录对文件的访问?

          【讨论】:

            【解决方案5】:

            您可以使用来自https://live.sysinternals.com/procmon.exe 的 procmon.exe 这是一个实时监视器,所以回顾性使用不多。

            1. 取消选择(取消选中)“文件|捕获事件”菜单项。
            2. 通过选择“编辑|清除”清除当前显示的事件 显示”菜单项。
            3. 通过以下方式配置过滤器:

              一个。选择过程监视器“过滤器|过滤器...”菜单项。这会 显示“进程监视器过滤器”对话框。

              b.通过设置“显示匹配那些 条件”字段:

              c。 (pick)路径 (pick) 包含 whatever.txt 然后 (pick)Include

              d。点击“添加”按钮添加新过滤器。

            源自此处的说明:http://answers.perforce.com/articles/KB/3035

            【讨论】:

              猜你喜欢
              • 2023-04-09
              • 2010-10-14
              • 2017-01-11
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多