我们创建一个DLL供其他应用程序加载和使用应用程序中的一些功能。 DLL 依赖于加载它的实际路径。
<product_home>/bin/<DLL is here>
|
|----/configdir/configfile
|----/lib/<java jarfiles>
它需要product_home位置来读取配置文件和加载jar文件等
我的 Windows 应用程序预加载了一个特殊的 DLL。我需要在进程中找到加载的 DLL 的实际路径,并使用它来设置“HOME”变量。这将用于其余的处理。当计算机上存在多个版本的 dll 时,使用外部设置的环境变量有时会失败。对我来说,只要 DLL 能够获取实际加载的位置,它就可以找出自己的“product_home”。
DLL本文Get Your DLL's Path/Name提供了一种这样的方法-(尚未尝试成功。生成的exe崩溃)。这是正确的方法吗?
最佳答案
要么我不明白您的需求,要么您提到的链接不是您需要的。如果我理解正确的话,您希望获得进程加载的某个 DLL 的完整路径。因此,假设 DLL 是“kernel32.dll”,您想要获取“c:\windows\system32\kernel32.dll”。如果我错了,请纠正我。
如果这就是您想要的,最简单的方法是:
HMODULE hModule = GetModuleHandle(_T("kernel32.dll"));
TCHAR dllPath[_MAX_PATH];
GetModuleFileName(hModule, dllPath, _MAX_PATH);
为简洁起见,省略了失败检查 - 了解有关 GetModuleHandle 的更多信息和 GetModuleFileName .
关于windows - 如何在 Windows 进程(XP/Windows 7)中找到加载的 DLL 的实际路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6705531/