繁体   English   中英

如何在 windows 进程(XP /Windows 7)中找到加载的 DLL 的实际路径

[英]How can I find actual path to a loaded DLL with in a windows process (XP /Windows 7)

我们创建一个 DLL 供其他应用程序加载和使用应用程序中的一些功能。 DLL 依赖于加载它的实际路径。

  <product_home>/bin/<DLL is here>
              |
              |----/configdir/configfile
              |----/lib/<java jarfiles>

它需要 product_home 位置来读取配置文件并加载 jar 文件等

我的 windows 应用程序加载了一个特殊的 DLL。 我需要在此过程中找到加载的 DLL 的实际路径,并使用它来设置“HOME”变量。 这将用于rest的处理。 当机器上存在多个版本的 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);

为简洁起见省略了失败检查 - 阅读有关GetModuleHandleGetModuleFileName的更多信息。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM