RegQueryValue函数检索与注册表中指定键的未命名值相关联的值。注册表中的值具有名称,类型和数据组件。此函数检索具有NULL名称的键的第一个值的数据。此函数用于与Windows 3.1版兼容。基于Win32的应用程序应使用RegQueryValueEx功能。
LONG RegQueryValue(
HKEY 【的hKeyru-Latn】, | //查询键的句柄 |
LPCTSTR 【lpSubKey】, | //查询子键的名称地址 |
LPTSTR 【lpValue】, | //返回字符串的缓冲区地址 |
PLONG 【lpcbValue】 | //返回字符串大小的缓冲区地址 |
); |
参数
【的hKeyru-Latn】
标识当前打开的键或任何以下预定义保留句柄值:
HKEY_CLASSES_ROOT
HKEY_CURRENT_USER
HKEY_LOCAL_MACHINE
HKEY_USERS
【lpSubKey】
指向一个以null结尾的字符串,其中包含要为其检索值的【的hKeyru-Latn】参数的子项的名称。如果此参数为NULL或指向空字符串,该函数将检索由【的hKeyru-Latn】标识的密钥由RegSetValue函数设置的值。
【lpValue】
指向接收与【lpSubKey】参数相关联的值的缓冲区。缓冲区应该足够大以包含终止空字符。如果不需要数据,此参数可以为NULL。
如果【lpValue】为NULL,并且【lpcbValue】不为NULL,则该函数将值(包括终止空字符)引用的数据的字节大小设置为【lpcbValue】指向的变量。这使得应用程序可以确定如何最佳地为值键的数据预分配缓冲区。
【lpcbValue】
指向一个变量,指定【lpValue】参数指向的缓冲区的大小(以字节为单位)。当函数返回时,该变量包含复制到【lpValue】的数据的大小,包括终止空字符。
如果由【lpValue】参数指定的缓冲区不够大以容纳数据,则该函数返回值ERROR_MORE_DATA,并将所需的缓冲区大小(以字节为单位)存储到【lpcbValue】指向的变量中。
如果【lpValue】为NULL,则函数返回ERROR_SUCCESS,并将字符串的大小(以字节为单位)存储到【lpcbValue】所指向的变量中。这使得应用程序可以确定为值键的数据分配缓冲区的最佳方式。
在所有情况下,【lpcbValue】中返回的值始终包含字符串中终止空字符的大小。
返回值
如果函数成功,则返回值为ERROR_SUCCESS。
如果函数失败,返回值是在WINERROR.H中定义的非零错误代码。您可以使用带有FORMAT_MESSAGE_FROM_SYSTEM标志的FormatMessage函数来获取错误的一般描述。
备注
必须使用KEY_QUERY_VALUE访问权限(KEY_READ访问包含KEY_QUERY_VALUE访问权限)打开【的hKeyru-Latn】参数确定的密钥。
如果使用此ANSI函数(通过显式调用RegQueryValue或在包含WINDOWS.H文件之前不定义Unicode),则该函数将存储的Unicode字符串转换为ANSI字符串,然后将其复制到由【lpValue】参数。
也可以看看
RegEnumKey, RegEnumKeyEx, RegEnumValue, RegQueryInfoKey, RegQueryValueEx, RegSetValue, RegSetValueEx