![](/img/trans.png)
[英]How can I cope with 32bit/64bit mismatches when doing IPC via SendMessage?
[英]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.