【问题标题】:C++ Windows - Get PIDs of process by executable file pathC++ Windows - 通过可执行文件路径获取进程的 PID
【发布时间】:2019-09-24 12:09:30
【问题描述】:

众所周知并且经常被问到如何从其 PID 获取可执行文件的完整路径。但是,我需要相反:我需要从其可执行文件的绝对路径中找到进程的 PID。

有没有一种简单的方法可以做到这一点,或者我应该获取所有 PID 并手动比较可执行路径?

我为什么需要它?我需要终止这个进程的垃圾实例,而不杀死与我应该终止的进程同名的其他进程。

【问题讨论】:

  • 看看 POSIX 函数。
  • 枚举所有进程,如果名称匹配 - 进程的查询路径
  • 你有想要保留的进程ID吗?
  • 如果您有相同的进程名称但使用不同的 pid,您认为如何区分终止哪个 pid 和不终止哪个 pid?
  • 要弄清楚这一点,我应该使用我运行的可执行文件的绝对路径,它是相同的,也没有。如果名称匹配但不匹配绝对路径,则它是一个要保留的 PID。

标签: c++ winapi pid


【解决方案1】:

没有直接的 API 调用来获取绝对路径的进程 ID。正如您所猜测的,您将不得不枚举所有进程,直到找到您感兴趣的路径,然后您将获得其进程 ID。看看EnumProcesses()CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS)。有关示例,请参阅 MSDN 上的 Process Enumeration

【讨论】:

猜你喜欢
  • 2015-12-31
  • 1970-01-01
  • 1970-01-01
  • 2017-05-25
  • 2018-07-29
  • 1970-01-01
  • 2020-08-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多