Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/reporting-services/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Winapi RegGetValue,该值可以是REG_SZ或REG_EXPAND_SZ_Winapi - Fatal编程技术网

Winapi RegGetValue,该值可以是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

我试图获取一个值的数据,该值通常为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 SZ
,则效果很好,但如果我同时指定了这两个选项,则效果不好。我不想把我的支票限制在一种特定的类型。MSDN说我可以对该参数使用“以下一个或多个”


为什么会出现此错误?如何解决此错误?

这是windows 7的错误。但在这里,它将使用
RRF_RT_REG_SZ | RRF_RT_REG_EXPAND|RRF_NOEXPAND
标志-因此,use
RRF_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
标志-因此,use
RRF_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上遇到了这个问题。