Winapi RegGetValue,该值可以是REG_SZ或REG_EXPAND_SZ
我试图获取一个值的数据,该值通常为REG_SZ类型,但我还想支持它是REG_EXPAND_SZ的可能性 我试过这个:Winapi RegGetValue,该值可以是REG_SZ或REG_EXPAND_SZ,winapi,Winapi,我试图获取一个值的数据,该值通常为REG_SZ类型,但我还想支持它是REG_EXPAND_SZ的可能性 我试过这个: RegGetValue(HKEY_LOCAL_MACHINE, subkey, valueName, RRF_RT_REG_SZ | RRF_RT_REG_EXPAND_SZ, NULL, buffer, &bufferSize) 但它返回87(“不正确的参数”) 如果我自己通过RRF\u RT\u REG\u SZ或RRF\u RT\u REG\u EXPAND\u
RegGetValue(HKEY_LOCAL_MACHINE, subkey, valueName, RRF_RT_REG_SZ | RRF_RT_REG_EXPAND_SZ, NULL, buffer, &bufferSize)
但它返回87(“不正确的参数”)
如果我自己通过RRF\u RT\u REG\u SZ
或RRF\u RT\u REG\u EXPAND\u SZ
,则效果很好,但如果我同时指定了这两个选项,则效果不好。我不想把我的支票限制在一种特定的类型。MSDN说我可以对该参数使用“以下一个或多个”
为什么会出现此错误?如何解决此错误?这是windows 7的错误。但在这里,它将使用
RRF_RT_REG_SZ | RRF_RT_REG_EXPAND|RRF_NOEXPAND
标志-因此,useRRF_NOEXPAND
EXPAND_SZ字符串将不会被扩展(需要是直接调用ExpandEnvironmentStrings
)当然,如果我们在mask中接受多个类型,我们需要使用dwType来精确地确定哪种类型有数据
从win8.1开始-RRF_RT_REG_SZ | RRF_RT_REG_EXPAND_SZ
无错误运行
在Windows7(和早期版本)中,函数中存在下一个代码
if (((dwFlags & RRF_RT_ANY) != RRF_RT_ANY) &&
(dwFlags & RRF_RT_REG_EXPAND_SZ) &&
!(dwFlags & RRF_NOEXPAND))
{
return ERROR_INVALID_PARAMETER;
}
因此,即使我们甚至将使用单个
RRF\u RT\u REG\u EXPAND\u SZ
标志,我们也会遇到相同的错误。这是windows 7的错误。但在这里,它将使用RRF_RT_REG_SZ | RRF_RT_REG_EXPAND|RRF_NOEXPAND
标志-因此,useRRF_NOEXPAND
EXPAND_SZ字符串将不会被扩展(需要是直接调用ExpandEnvironmentStrings
)当然,如果我们在mask中接受多个类型,我们需要使用dwType来精确地确定哪种类型有数据
从win8.1开始-RRF_RT_REG_SZ | RRF_RT_REG_EXPAND_SZ
无错误运行
在Windows7(和早期版本)中,函数中存在下一个代码
if (((dwFlags & RRF_RT_ANY) != RRF_RT_ANY) &&
(dwFlags & RRF_RT_REG_EXPAND_SZ) &&
!(dwFlags & RRF_NOEXPAND))
{
return ERROR_INVALID_PARAMETER;
}
因此,即使我们使用单个
RRF_RT_REG_EXPAND_SZ
标志,我们也会得到相同的错误。使用RRF_RT_REG_SZ | RRF_RT_REG_EXPAND_SZ
时,我没有得到错误。所以你可能在某些方面犯了错误else@HansPassant有没有文档错误?win10没有错误,win7真的87错误只在win7上使用RRF_RT_REG_SZ | RRF_RT_REG_展开| RRF_NOEXPAND
谢谢,我在Windows 7上遇到了这个问题。我在使用RRF_RT_REG_SZ | RRF_RT_REG_展开
时没有错误。所以你可能在某些方面犯了错误else@HansPassant有没有文档错误?win10没有错误,win7真的有87个错误只在win7上使用RRF\u RT\u REG\u SZ | RRF\u RT\u REG\u EXPAND
谢谢,我在Windows 7上遇到了这个问题。