You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows下如何记录进程及其子进程发起的所有CreateProcess调用

Windows平台追踪进程CreateProcess调用的CLI方案

有两类成熟的命令行方案可以实现和Linux下strace ./myprogram | grep CreateProcess > log完全一致的效果,都能自动追踪build.bat及其所有层级派生进程的进程创建调用:

  • 轻量直连方案(最贴合Linux使用习惯)
    直接使用Windows平台移植的strace命令行工具,使用逻辑和Linux版本完全一致,加-f参数即可自动跟踪所有子进程,执行一行命令就能完成日志采集:
    strace -f build.bat | findstr CreateProcess > log
    
    命令执行完后生成的log文件,和你在Linux下拿到的输出格式基本一致,会按调用顺序列出所有CreateProcess调用的发起进程、参数、返回值信息。
  • 微软官方工具方案(无兼容问题)
    用微软Sysinternals套件里的procmon命令行模式,不需要做适配,稳定性最高:
    1. 管理员身份打开命令行,先启动后台追踪,指定要跟踪的初始进程为build.bat,会自动关联追踪其所有派生进程:
      procmon /Quiet /Minimized /BackingFile trace_raw.pml /IncludeProcesses build.bat
      
    2. 等build.bat及所有子进程执行完毕后,执行过滤导出命令,只保留CreateProcess类事件:
      procmon /OpenLog trace_raw.pml /SaveAs log.csv /Filter "Operation","is","Process Create","Include"
      
    导出的csv文件里包含每一次进程创建的父进程信息、子进程路径、启动命令行、执行时间、PID等完整字段。
  • 系统原生无额外安装方案
    不想下载任何外部工具的话,可以直接用Windows自带的ETW内核事件追踪功能,全程用系统内置命令完成:
    1. 管理员身份启动进程创建事件追踪会话:
      logman start proc_trace -p Microsoft-Windows-Kernel-Process 0x10 -ets -o trace_raw.etl
      
    2. 正常运行你的build.bat脚本,所有执行流程跑完后停止追踪:
      logman stop proc_trace -ets
      
    3. 把二进制追踪日志转成可读文本,过滤出进程创建事件:
      tracerpt trace_raw.etl /of CSV /o trace_full.csv
      findstr /C:"ProcessStart" trace_full.csv > log
      

注意:涉及内核级进程事件采集的操作,都需要用管理员权限启动命令行窗口执行,否则会因为权限不足拿不到完整的事件数据。

内容的提问来源于stack exchange,提问作者warchantua

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.01 19:06:39