首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SetDllDirectory,重置(强制)?

SetDllDirectory,重置(强制)?
EN

Stack Overflow用户
提问于 2015-12-11 02:39:09
回答 2查看 811关注 0票数 1

我们有一个使用SetDllDirectory的应用程序

代码语言:javascript
复制
exe
 |
 |--DLLDirectory\Any1.dll
 |--DLLDirectory\Any2.dll

无论如何,在SetDllDirectory("DLLDirectory")之前调用LoadLibrary

-在这一点上,我们应该叫SetDllDirectory("")吗?

无论如何,在SetDllDirectory("DLLDirectory")之前调用LoadLibrary

应用程序加载Any#.dll

代码语言:javascript
复制
SetDllDirectory("DllDirectory")
LoadLibrary(Any1.dll)
// SetDllDirectory("") ?
SetDllDirectory("DllDirectory")
LoadLibrary(Any2.dll)
// SetDllDirectory("") ?

我怀疑,在LoadLibrary之后是否需要重新设置dll目录?如果重置是强制性的,那么如果其他人(例如: Any1.dll调用GetDllDirectory )

SetDllDirectory函数

确定DLL的加载路径

我已经提到了上面的职位,但仍然需要有人在这里提出建议。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-12-11 03:49:43

简短回答:不,这不是强制性的。

Long removes :使用空字符串""调用SetDllDirectory只会从默认的DLL搜索顺序中删除当前目录。如果要恢复默认搜索顺序,则需要将NULL作为参数传递。您之所以想这样做,是因为安全的原因。基本上,执行运行时动态链接是有风险的,因为您不知道搜索顺序的当前状态。这就是为什么重置搜索顺序状态是很好的做法。在每次LoadLibrary调用后重置搜索顺序状态的决定取决于您是否信任该库。

详情请参阅下列文章:

票数 0
EN

Stack Overflow用户

发布于 2015-12-11 03:40:45

最好是将完整的路径传递到LoadLibrary,而不要调用SetDllDirectory。

虽然这是不可能的,但另一段代码可以在其他线程上运行,从而对您进行更改。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34215261

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档