C++ WinAPI - 如何从可执行文件的名称中获取其安装路径

C++ WinAPI - How to get the installation path of an executable from its name

本文关键字:获取 路径 安装 WinAPI 可执行文件 C++      更新时间:2023-10-16

有没有办法通过使用可执行文件的名称来获取可执行文件(不是self)的安装路径。假设我想从进程列表快照查找正在运行的进程(例如:"记事本.exe")安装在硬盘驱动器上的路径。

最好

进程列表为您提供每个正在运行的进程的完整路径和文件名。只需枚举列表,仅查看每个路径的文件名部分,当您找到感兴趣的文件名时,只需截断路径中的文件名并根据需要使用剩余的文件夹路径即可。

进程列表快照是否包含该信息。

事后重建这些信息是不可能的。 即使您还具有与进程列表快照匹配的确切磁盘状态的快照,磁盘上也可能有多个具有相同文件名的文件。

列出进程时获取可执行路径,并将其存储在快照中。 一旦进程退出,为时已晚。

您可能可以使用SearchPath()函数。

这些函数应该会有所帮助

HMODULE WINAPI GetModuleHandle(
  _In_opt_  LPCTSTR lpModuleName
);

然后

DWORD WINAPI GetModuleFileName(
  _In_opt_  HMODULE hModule,
  _Out_     LPTSTR lpFilename,
  _In_      DWORD nSize
);