LoadLibraryEx() 中更改的搜索路径 (LOAD_WITH_ALTERED_SEARCH_PATH) 是啥
Posted
技术标签:
【中文标题】LoadLibraryEx() 中更改的搜索路径 (LOAD_WITH_ALTERED_SEARCH_PATH) 是啥【英文标题】:What is the altered search path (LOAD_WITH_ALTERED_SEARCH_PATH) in LoadLibraryEx()LoadLibraryEx() 中更改的搜索路径 (LOAD_WITH_ALTERED_SEARCH_PATH) 是什么 【发布时间】:2015-03-04 08:57:34 【问题描述】:LoadLibraryEx() 的文档实际上并未解释更改后的搜索路径是什么。在LOAD_WITH_ALTERED_SEARCH_PATH
标志的表条目中,它说“请参阅备注部分”,但在备注部分中它只说此标志导致LoadLibraryEx()
使用更改后的搜索路径。
但它没有在任何地方解释更改后的搜索路径实际上是什么。
【问题讨论】:
【参考方案1】:我终于找到了解释,但它在 LoadLibraryEx() 文档链接到的页面中 - Dynamic-Link Library Search Order。
请注意,标准搜索策略和 LoadLibraryEx 使用 LOAD_WITH_ALTERED_SEARCH_PATH 指定的替代搜索策略仅在一个方面有所不同:标准搜索从调用应用程序的目录开始,而替代搜索从 LoadLibraryEx 所在的可执行模块的目录开始正在加载。
所以标准从 *.exe 的目录开始,而修改的从 *.dll 的目录开始。
【讨论】:
【参考方案2】:但它没有在任何地方解释更改后的搜索路径实际上是什么。
事实并非如此。您链接到的documentation 在备注部分对此进行了解释:
搜索 DLL 和依赖项
搜索路径是搜索 DLL 的目录集。 LoadLibraryEx 函数可以使用标准搜索路径或更改的搜索路径来搜索 DLL,也可以使用通过 SetDefaultDllDirectories 和 AddDllDirectory 函数建立的特定于进程的搜索路径。有关目录列表及其搜索顺序,请参阅Dynamic-Link Library Search Order。
点击该段末尾的链接了解详细信息。您确实需要阅读所有文档,一直到页面底部。
【讨论】:
对不起,我不是这个意思。只是为了解释一下——我浏览文档的方式是使用“Ctrl+F”来搜索关键字,或者使用 Google。通常这可以正常工作,但在这种情况下它没有,我最初认为它只是丢失了。我敢肯定还有很多其他人以我的方式阅读文档。我希望我的问题(和答案)能帮助他们。具有讽刺意味的是,您的回答只会帮助那些不像我,并且能够理解阅读的人,而不是疯狂地搜索他们的关键字。 我的建议是改变你阅读文档的方式。 ;-) 这确实是我回答的主要信息。老实说,我认为对于人们可能找不到的每一个文档,我们都不需要在 Stack Overflow 上提出问题。当一个主题有很好的文档记录时,就像这个一样,这就是所需要的。我认为更大的图景是如何阅读一般的文档,而不是系统这一小部分的细节。无论如何,这是我的看法。 而且,FWIW,如果您按 CTRL+F 键浏览原始主题,搜索更改后,您会找到备注部分的相关部分。 绝对帮助了我 - 我认为这是一个非常相关的问题,感谢您提出这个问题。这些信息在文档中被埋得非常非常深,它确实应该出现在 LOAD_WITH_ALTERED_SEARCH_PATH 定义旁边。 @DavidHeffernan 它没有回答他的问题并斥责他没有阅读链接到另一篇 5 页 MSDN 文章的 5 页 MSDN 文章 - 这两篇文章都写得不好或易于浏览。他最终发布了自己问题的答案,我很高兴他这样做了,因为我有完全相同的经历。以上是关于LoadLibraryEx() 中更改的搜索路径 (LOAD_WITH_ALTERED_SEARCH_PATH) 是啥的主要内容,如果未能解决你的问题,请参考以下文章
IIS7.5 HTTP 错误 500 调用loadlibraryex失败的解决方法
win32ctypes.pywin32.pywintypes.error: (2, ‘LoadLibraryEx‘, ‘系统找不到指定的文件。‘)