繁体   English   中英

如何应对GetDllDirectory产生的歧义值?

[英]How might one cope with the ambiguous value produced by GetDllDirectory?

GetDllDirectory产生一个不明确的值。 当此调用产生的字符串为空时,表示以下之一:

  • 没有人致电SetDllDirectory
  • 有人将NULL传递给SetDllDirectory
  • 有人将空字符串传递给SetDllDirectory

就我而言,前两种情况是等效的,但第三种情况是有问题的。 如果我要编写保存/恢复代码(调用GetDllDirectory来保存“旧”值, SetDllDirectory来临时设置“新”值,然后再调用SetDllDirectory来还原“旧”值),则冒着将某些内容反转的风险其他程序员的意图。

如果其他程序员希望当前工作目录位于DLL搜索顺序中(换句话说,前两个项目符号之一为true),并且我将空字符串传递给SetDllDirectory ,那么我将取出当前工作目录DLL搜索顺序的顺序,颠倒了其他程序员的意图。

谁能提出消除或消除这种歧义的方法?

PS我知道在DLL搜索顺序中具有当前工作目录可以解释为安全漏洞。 但是,这是默认行为,我的代码无法撤消该行为。 我的代码需要与所有潜在调用者的期望兼容,其中许多调用者既大又老,而且超出了我的控制范围。

对此没有解决方法。 在一块岩石和一块困难的地方之间,您应该假定已传递了NULL。 已经有一种使用注册表设置启用安全搜索的方法。

暂无
暂无

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

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