监视Windows中进程执行的某些系统调用

Jes*_*erE 34 windows cross-platform process

我希望能够监视进程发出的某些系统调用,主要是文件I/O调用.在Linux上,我可以使用带有合适参数的strace来逃避,但我怎样才能在Windows上执行此操作?

我主要对运行一个进程并确定它已经读取和写入的文件感兴趣.

编辑:我想从另一个进程以编程方式执行此操作.我知道ProcessMonitor,但我希望以一种形式接收数据,我可以将其导入另一个程序以进行进一步分析.

编辑:如果我进一步缩小我的要求,它可能足以监视对CreateFile()的调用.我真的只对打开的文件感兴趣,如果打开它们进行读/写或只是阅读.我没有说明的另一个要求是速度相当重要; 我正在计划为编译C++文件这样做,并且提取一个生成20MB日志文件的完整GUI会产生过高的开销.

编辑:如果它不需要管理权限也会很好.

Mic*_*ael 25

Windows上有几个选项.

Windows Performance Toolkit可用于启用各种系统事件的跟踪,包括文件I/O,还包括用于处理和查看这些事件的工具.您可以使用xperf开始跟踪各种类型的事件并保存到ETL文件,然后您可以使用相同的工具处理或查看这些文件.

来自SysInternals的Process Monitor是另一个非常易于使用的选项,它使您能够快速查看系统上正在执行的任何进程的所有文件和注册表访问. http://blogs.msdn.com/carloc/archive/2008/10/31/how-to-automate-process-monitor.aspx还展示了如何以自动方式运行Process Monitor.

如果您想以编程方式完成此操作,可以使用ETW函数(StartTrace,EnableTrace等)来捕获文件I/O事件并保存到ETL文件.这里有示例代码.


kcw*_*cwu 6

在Windows上,您可以使用进程监视器来监视进程活动(io和注册表).如果你真的不想知道系统调用,我想这符合你的需要.

您可以使用winapioverride32来监控api呼叫.


ds-*_*msk 6

Rohitab Batra 的API Monitor非常适合系统调用。