You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Windows平台如何获取最近启动进程的文件路径?是否有对应WinAPI?

没问题,这个需求在Windows上完全可以实现,我给你整理几种靠谱的方案和对应的WinAPI:

1. 读取Windows事件日志

Windows系统会把进程创建的相关事件记录到事件日志中,你可以通过WinAPI来提取这些历史记录:

  • 核心API:OpenEventLog(打开指定日志)、ReadEventLog(读取日志条目)
  • 关键事件ID:4688(进程创建事件),这个事件里包含了完整的进程文件路径、创建时间,甚至是父进程信息
  • 注意:读取Security日志需要管理员权限,而且日志会根据系统配置自动轮转或清理,如果历史记录已经被覆盖,就无法获取了
2. 使用ETW(事件追踪机制)

ETW是Windows原生的高性能事件追踪框架,既能实时捕获进程创建事件,也可以配置留存历史记录(如果预先开启了相关追踪会话):

  • 核心API:StartTrace(创建追踪会话)、EnableTraceEx2(订阅指定事件提供者)、ProcessTrace(处理捕获到的事件)
  • 要订阅的提供者:Microsoft-Windows-Kernel-Process,关注其中的ProcessCreate事件,该事件会返回进程路径、创建时间、PID等详细信息
  • 优势:信息全面、实时性强;缺点:需要正确配置ETW会话,如果没有预先开启追踪,可能无法获取之前的历史记录
3. 补充:仅获取当前运行进程的信息(不符合历史需求)

如果只是想拿当前存活进程的路径和启动时间,可以用这些API:

  • CreateToolhelp32Snapshot 配合 Process32First/Process32Next 遍历进程
  • 或者 EnumProcesses + OpenProcess + QueryFullProcessImageName 获取路径,再用 GetProcessTimes 获取启动时间
  • 但这个只能拿到正在运行的进程,已经退出的记录拿不到,所以只是作为补充说明
重要提醒
  • 几乎所有获取进程历史或系统级进程信息的操作,都需要管理员权限才能正常执行,否则可能会被系统拒绝访问
  • 事件日志和ETW的历史记录留存时间,取决于系统的日志大小限制、追踪会话配置,不是永久保存的

内容的提问来源于stack exchange,提问作者original.roland

火山引擎 最新活动