【问题标题】:RegCreateKeyExA function returning ERROR_INVALID_PARAMETER (error code 87)RegCreateKeyExA 函数返回 ERROR_INVALID_PARAMETER(错误代码 87)
【发布时间】:2020-05-24 00:45:20
【问题描述】:

我遇到了一个值为 87 的错误代码,它与 Winerror.h 中的 ERROR_INVALID_PARAMETER 相关。 RegCreateKeyExA()函数的函数调用如下:

RegCreateKeyExA(HKEY_LOCAL_MACHINE, "Software/Test/RegistryTest", 0, NULL, REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, NULL, &createdKey, &dispositionValueOfCreatedKey);

在哪里,

createdKeyHKEY类型的变量,声明为HKEY createdKey;

dispositionValueOfCreatedKeyDWORD 类型的变量,声明为DWORD dispositionValueOfCreatedKey;

目前,我还没有尝试并且不知道有任何方法可以减轻此错误,因为我相信,上述函数调用满足this MSFT 函数文档中提到的所有参数要求。

提前致谢。

【问题讨论】:

  • 组件分隔符是反斜杠 (\ ),而不是正斜杠 (/)。
  • 正如@IInspectable 指出的那样,您需要一个反斜杠分隔符,您必须使用 double 反斜杠指定它以避免“转义”下一个字符。
  • @IInspectable 哎呀!傻我!我想我真的需要休息一下!
  • @AdrianMole "...您必须使用 double 反斜杠指定它以避免“转义”下一个字符..." -除非你使用raw string literal,否则不需要双重转义,例如:RegCreateKeyExA(..., R("Software\Basil\RegistryTest"), ...);
  • @hecate 您可以发布答案并接受它,以明确和帮助正在搜索此问题的其他人,而不是添加有问题的解决方案。

标签: c++ c windows winapi registry


【解决方案1】:

注册表路径的组成部分必须用反斜杠 (\) 分隔,如果路径字符串未指定为 R("dir_1\dir_2\dir_3") 的原始字符串文字,则必须对其进行转义以避免转义下一个对应字符(独占到 MSFT 编译器)或R"dir_1\dir_2\dir_3"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-07-06
    • 1970-01-01
    • 2018-01-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多