我需要从windows中的进程ID获取进程名称,以查找与已记录事件关联的进程名称。它只能从记录的事件中获取执行进程ID。进程句柄是使用GetProcessImageFileName()
方法所必需的输入。它无法从记录的事件中获取进程句柄。
在duplicate question中,它讨论了当前正在运行的流程。但我现在不需要运行进程,因为它讨论了记录事件。 &安培;我怀疑在Windows中processID与processName组合是否唯一。所以需要考虑一下..
我希望必须有一些结构来将进程ID映射到进程名称。有这样的结构吗?或从流程ID获取流程图像名称的任何其他方法?
答案 0 :(得分:3)
我需要从Windows中的进程ID获取进程名称,以查找与已记录事件关联的进程名称。
如果您从日志中获取进程ID,则只有在原始进程仍在运行时才会生效。否则,该ID不再对该进程名称有效。如果在您阅读日志之前该过程已经退出,则所有投注均已关闭。
我现在不需要运行流程,因为它讨论了记录事件。
如果没有记录原始进程名称,那么你运气不好。
我怀疑processID与processName组合在Windows中是否唯一。
进程ID仅在用于正在运行的进程时才是唯一的。进程结束后,其进程ID不再有效,可以重新用于后续的新进程。
我希望必须有一些结构来将进程ID映射到进程名称。
是的,但仅适用于正在运行的流程。您可以将进程ID传递给OpenProcess()
。如果成功,它将向正在运行的进程返回HANDLE
。然后,您可以将HANDLE
传递给GetModuleFileName()
,GetProcessImageFileName()
或QueryFullProcessImageName()
,具体取决于您可以从OpenProcess()
获得的操作系统版本和权限。