RegQueryValueA 函数 (winreg.h)
检索与指定注册表项的默认或未命名值关联的数据。 数据必须是 null-terminated 字符串。
语法
LSTATUS RegQueryValueA(
[in] HKEY hKey,
[in, optional] LPCSTR lpSubKey,
[out, optional] LPSTR lpData,
[in, out, optional] PLONG lpcbData
);
参数
[in] hKey
打开的注册表项的句柄。 密钥必须使用KEY_QUERY_VALUE访问权限打开。 有关详细信息,请参阅 注册表项安全和访问权限。
此句柄由 RegCreateKeyEx、RegCreateKeyTransacted、RegOpenKeyEx或 RegOpenKeyTransacted 函数返回。 它也可以是以下 预定义键之一:
- HKEY_CLASSES_ROOT
- HKEY_CURRENT_CONFIG
- HKEY_CURRENT_USER
- HKEY_LOCAL_MACHINE
- HKEY_USERS
[in, optional] lpSubKey
检索其默认值的 hKey 参数的子项的名称。
键名称不区分大小写。
如果此参数 NULL 或指向空字符串,则该函数将检索由 hKey标识的键的默认值。
有关详细信息,请参阅 注册表元素大小限制。
[out, optional] lpData
指向接收指定键默认值的缓冲区的指针。
如果 lpValueNULL,并且 l 为非NULL,则该函数将返回ERROR_SUCCESS,并将数据的大小(以字节为单位)存储在 l指向的变量中。 这使应用程序能够确定为值数据分配缓冲区的最佳方法。
[in, out, optional] lpcbData
指向变量的指针,该变量指定由 lpValue 参数指向的缓冲区的大小(以字节为单位)。 函数返回时,此变量包含复制到 lpValue的数据的大小,包括任何终止 null 字符。
如果数据具有REG_SZ、REG_MULTI_SZ或REG_EXPAND_SZ类型,则此大小包括任何终止 null 字符或字符。 有关详细信息,请参阅“备注”。
如果指定的缓冲区 lpValue 不足以容纳数据,则函数将返回ERROR_MORE_DATA,并将所需的缓冲区大小存储在 l指向的变量中。 在这种情况下,未定义 lpValue 缓冲区的内容。
返回值
如果函数成功,则返回值ERROR_SUCCESS。
如果函数失败,则返回值为 系统错误代码。
如果 lpValue 缓冲区太小而无法接收值,则函数将返回ERROR_MORE_DATA。
言论
如果使用此函数的 ANSI 版本(无论是通过显式调用 RegQueryValueA,还是未在包括 Windows.h 文件之前定义 UNICODE),此函数会将存储的 Unicode 字符串转换为 ANSI 字符串,然后再将其复制到由 lpValue 参数指定的缓冲区。
如果数据具有REG_SZ、REG_MULTI_SZ或REG_EXPAND_SZ类型,则字符串可能未使用正确的 null-terminating 字符存储。 因此,即使函数返回ERROR_SUCCESS,应用程序也应确保在使用该字符串之前正确终止;否则,它可能会覆盖缓冲区。 (请注意,REG_MULTI_SZ字符串应具有两个 null-terminating 字符。
请注意,将重定向访问某些注册表项的操作。 有关详细信息,请参阅注册表中的
注意
winreg.h 标头将 RegQueryValue 定义为一个别名,该别名根据 UNICODE 预处理器常量的定义自动选择此函数的 ANSI 或 Unicode 版本。 将中性编码别名与不中性编码的代码混合使用可能会导致编译或运行时错误不匹配。 有关详细信息,请参阅函数原型的
要求
要求 | 价值 |
---|---|
最低支持的客户端 | Windows 2000 Professional [仅限桌面应用] |
支持的最低服务器 | Windows 2000 Server [仅限桌面应用] |
目标平台 | 窗户 |
标头 | winreg.h (包括 Windows.h) |
库 | Advapi32.lib |
DLL | Advapi32.dll |