如何在DLL中找到加载它的进程

How to find in a DLL which process loaded it?

本文关键字:加载 进程 DLL      更新时间:2023-10-16

我正在完善一个DLL模块,它可以作为Windows应用程序的插件。

此插件可与单个软件系列的各种版本兼容。现在,对于某些功能,我必须访问父软件的配置文件。由于不同版本的软件在不同的地方有这些,我必须找出哪个版本加载DLL。通过进程可执行文件名称(即abc_v1.exe、abc_v2.exe、abc_v3.exe)可以很容易地识别不同的版本。

有没有办法获得加载DLL的进程的名称?我使用C++和一些基本的WinAPI命令,但不是ATL、MFC或类似的命令。

目前,我正在使用它自己的SDK功能轮询父软件,但这需要打开连接。根据配置文件的内容,DLL不需要打开连接,所以我想知道在建立通信之前加载了哪个版本。

调用GetModuleFileName,传递NULL作为模块句柄。来自文件:

正在请求其路径的已加载模块的句柄。如果此参数为NULL,GetModuleFileName将检索当前进程的可执行文件的路径。