【发布时间】:2011-01-30 06:34:33
【问题描述】:
嘿,
我正在尝试获取与我的 exe 文件位于同一文件夹中的 dll 的路径。要走的路似乎是使用QueryFullProcessImageName() 或GetModuleFileName() 之一来获取运行可执行文件的路径,然后使用字符串操作使其成为所需库的路径。
不幸的是,这两个函数都没有提供提前找出所需大小缓冲区的方法。我已经尝试为 nSize 参数传入零,但这并没有达到预期的效果。
这样做的最佳实践方式是什么?
【问题讨论】:
-
我确实看到了,但我愿意使用
GetModuleFileName以外的 API(也尝试过QueryFullProcessName和GetProcessImageFileName) -
所有这些 API(除了获取模块文件名)最终都涉及调用
NtQueryInformationProcess甚至NtQuerySystemInformation(SystemProcessIdInformation)。如果 Win32 API 不够好,请直接调用NtQueryInformationProcess。不过,内核到用户的 API 不会为您分配缓冲区。