如何在没有枚举过程的情况下通过C++获取进程ID的进程名?

如何在没有枚举过程的情况下通过C++获取进程ID的进程名?,c++,windows,winapi,process,operating-system,C++,Windows,Winapi,Process,Operating System,我需要从windows中的进程id获取进程名称,以查找与已记录事件关联的进程名称。它只能从记录的事件中获取执行进程id。Process handle是使用GetProcessImageFileName方法所需的输入。无法从记录的事件中获取进程句柄 在中,它讨论了当前正在运行的进程。但我目前不需要运行进程,因为它讨论记录的事件我怀疑processID与processName的组合在Windows中是否唯一。所以需要考虑的还有… 我希望必须有某种结构将进程id映射到进程名称。有没有这样的结构?或者从

我需要从windows中的进程id获取进程名称,以查找与已记录事件关联的进程名称。它只能从记录的事件中获取执行进程id。Process handle是使用GetProcessImageFileName方法所需的输入。无法从记录的事件中获取进程句柄

在中,它讨论了当前正在运行的进程。但我目前不需要运行进程,因为它讨论记录的事件我怀疑processID与processName的组合在Windows中是否唯一。所以需要考虑的还有…

我希望必须有某种结构将进程id映射到进程名称。有没有这样的结构?或者从进程id获取进程映像名称的任何其他方法

我需要从windows中的进程id获取进程名称,以查找与已记录事件关联的进程名称

如果您是从日志中获取进程ID,则仅当原始进程仍在运行时,该ID才有效。否则,该ID对于该进程名称不再有效。如果进程在您读取日志之前已退出,则所有赌注均已取消

我目前不需要运行进程,因为它讨论记录的事件

如果没有记录原始进程名,那么您就不走运了

我怀疑processID与processName的组合在Windows中是否唯一

进程ID只有在用于正在运行的进程时才是唯一的。一旦流程结束,其流程ID将不再有效,并且可以重新用于后续的新流程

我希望必须有某种结构将进程id映射到进程名称


是的,但仅适用于正在运行的进程。您可以将进程ID传递给。如果成功,它将返回运行进程的句柄。然后,您可以将该句柄传递给或,这取决于您能够从OpenProcess获得的操作系统版本和权限。

进程名称是什么意思?您尝试过OpenProcess吗?打开时不需要请求完全访问权限。您的意思是GetProcessImageFileName吗?@DavidHeffernanProcessImageFileName@AlanStokes如中所示,它将打开一个现有的本地进程对象。我不明白他们所说的现有本地流程是什么意思。它意味着当前正在运行的进程&如果不是,它是否返回除上一个句柄之外的新句柄?