跨平台文件

我希望能够跟踪特定程序调用的文件读/写。 不需要关于实际交易的信息,只需要涉及文件名。

有没有跨平台解决方案?
什么是各种平台特定的方法?
在Linux上,我知道有strace / ptrace(如果有更快的方法,那也会很好)。
我认为在Mac OS上有ktrace。
Windows怎么样?

而且,如果能够阻止(延迟)文件访问直到稍后的时间,这将是惊人的。

谢谢!


最简洁的答案是不。 有许多平台特定的解决方案都可能具有类似的接口,但它们本质上不是跨平台的,因为文件系统往往是平台特定的。


我如何在每个平台上都做得很好?

再次,它将取决于平台:)对于Windows,如果您想要跟踪在飞行中的读/写操作,您可能需要使用IFS。 如果您只想获得有关更改的通知,则可以使用ReadDirectoryChangesW或NTFS更改日志。

我建议只使用NTFS更改日记,因为它往往更可靠。


在Windows上,您可以使用命令行工具Handle或GUI版本Process Explorer查看给定进程已打开的文件。

如果您想在自己的程序中获取此信息,则可以使用Microsoft的IFS套件编写文件系统过滤器。 文件系统过滤器将显示所有进程的所有文件系统操作。 AV软件中使用文件系统过滤器在文件打开之前扫描文件或扫描新创建的文件。


只要你的程序启动你想要监控的进程,你可以编写一个调试器,然后每当进程启动或退出时你都会得到通知。 当一个进程启动时,你可以注入一个DLL来钩住每个单独进程的CreateFile系统调用。 然后该钩子可以使用管道或套接字将文件活动报告给调试器。

链接地址: http://www.djcxy.com/p/54593.html

上一篇: Cross platform file

下一篇: How to get temporary folder for current user