RegQueryValueEx

【勇芳软件工作室】汉化HomePreviousNext

RegQueryValueEx函数检索与打开的注册表项相关联的指定值名称的类型和数据。

LONG RegQueryValueEx(

HKEY 【的hKeyru-Latn】,//查询键的句柄
LPTSTR 【lpValueName】,//要查询的值的名称的地址
LPDWORD 【lpReserved】,//保留
LPDWORD 【//值类型缓冲区的地址】,//值类型缓冲区的地址
LPBYTE 【的lpData】,//数据缓冲区的地址
LPDWORD 【参数lpcbData】//数据缓冲区大小的地址
); 

参数

【的hKeyru-Latn】

标识当前打开的键或任何以下预定义保留句柄值:

HKEY_CLASSES_ROOT
HKEY_CURRENT_USER
HKEY_LOCAL_MACHINE
HKEY_USERS

【lpValueName】

指向一个以null结尾的字符串,其中包含要查询的值的名称。

【lpReserved】

Reserved; must be NULL.

【//值类型缓冲区的地址】

指向接收键值类型的变量。通过此参数返回的值将是以下之一:

含义
REG_BINARY任何形式的二进制数据。
REG_DWORD一个32位数字。
REG_DWORD_LITTLE_ENDIAN32位数字的小端格式(与REG_DWORD相同)。在小端格式中,字的最高有效字节是高字节。这是运行Windows NT和Windows 95的计算机最常用的格式。
REG_DWORD_BIG_ENDIAN一个32位数字的big-endian格式。在big-endian格式中,一个字的最高有效字节是低位字节。
REG_EXPAND_SZ一个空值终止的字符串,包含对环境变量的未扩展引用(例如“%PATH%”)。它将是Unicode或ANSI字符串,具体取决于您是使用Unicode还是ANSI函数。
REG_LINK一个Unicode符号链接。
REG_MULTI_SZ由两个空字符终止的以null结尾的字符串数组。
REG_NONE没有定义的值类型。
REG_RESOURCE_LIST设备驱动程序资源列表。
REG_SZ一个空值终止的字符串。它将是Unicode或ANSI字符串,具体取决于您是使用Unicode还是ANSI函数。

如果不需要该类型,则【//值类型缓冲区的地址】参数可以为NULL。

【的lpData】

指向接收值数据的缓冲区。如果不需要数据,此参数可以为NULL。

【参数lpcbData】

指向一个变量,指定【的lpData】参数指向的缓冲区的大小(以字节为单位)。当函数返回时,该变量包含复制到【的lpData】的数据的大小。

如果【的lpData】参数指定的缓冲区不够大以容纳数据,则该函数返回值ERROR_MORE_DATA,并将所需的缓冲区大小(以字节为单位)存储到【参数lpcbData】指向的变量中。

如果【的lpData】为NULL,并且【参数lpcbData】为非NULL,则该函数返回ERROR_SUCCESS,并将数据的大小(以字节为单位)存储在【参数lpcbData】所指向的变量中。这使得应用程序可以确定为值键的数据分配缓冲区的最佳方式。

如果数据具有REG_SZ,REG_MULTI_SZ或REG_EXPAND_SZ类型,则【的lpData】还将包括终止空字符的大小。

如果【的lpData】为NULL,则【参数lpcbData】参数可以为NULL。

返回值

如果函数成功,则返回值为ERROR_SUCCESS。

如果函数失败,返回值是在WINERROR.H中定义的非零错误代码。您可以使用带有FORMAT_MESSAGE_FROM_SYSTEM标志的FormatMessage函数来获取错误的一般描述。

备注

必须使用KEY_QUERY_VALUE访问权限来打开由【的hKeyru-Latn】标识的密钥。要打开该键,请使用RegCreateKeyExRegOpenKeyEx功能。

当值类型为REG_EXPAND_SZ时,此函数不会扩展值数据中的环境变量名称。ExpandEnvironmentStrings函数可用于扩展环境变量名称。

如果值数据具有REG_SZ,REG_MULTI_SZ或REG_EXPAND_SZ类型,并且使用该ANSI函数(通过显式调用RegQueryValueEx或在包含WINDOWS.H文件之前不定义Unicode),则此函数将存储的Unicode转换为在将其复制到【的lpData】指向的缓冲区之前,将其串串到ANSI字符串。

当调用【的hKeyru-Latn】设置为HKEY_PERFORMANCE_DATA句柄和指定对象的值字符串的RegQueryValueEx函数时,返回的数据结构有时具有未请求的对象。不要惊讶这是正常的行为。当调用RegQueryValueEx函数时,您应该总是期望走返回的数据结构来查找所请求的对象。

也可以看看

ExpandEnvironmentStrings, RegCreateKeyEx, RegEnumKey, RegEnumKeyEx, RegEnumValue, RegOpenKeyEx, RegQueryInfoKey, RegQueryValue