RegQueryValueEx 浅析

RegQueryValueEx,是VC语言中的一种。
功能:检索一个已打开的注册表句柄中,指定的注册表键的类型和设置值。

//函数原型:
LSTATUS RegQueryValueExA(
  HKEY    hKey,
  LPCSTR  lpValueName,
  LPDWORD lpReserved,
  LPDWORD lpType,
  LPBYTE  lpData,
  LPDWORD lpcbData
);

返回值
Long,零(ERROR_SUCCESS)表示成功。其他任何值都代表一个错误代码

参数表
参数 类型及说明

  • HKEY hKey,//一个已打开项的句柄,或者指定一个标准项名
  • LPCTSTR lpValueName,//要查询注册表键值的名字字符串,注册表键的名字,以空字符结束。
  • LPDWORD lpReserved,//未用,设为零
  • LPDWORD lpType,//用于装载取回数据类型的一个变量
  • LPBYTE lpData,//用于装载指定值的一个缓冲区
  • LPDWORD lpcbData,//用于装载lpData缓冲区长度的一个变量.//一旦返回,它会设为实际装载到缓冲区的字节数

hKey

打开的注册表项的句柄。该密钥必须已使用KEY_QUERY_VALUE访问权限打开。

此句柄由 RegCreateKeyEx,RegCreateKeyTransacted,RegOpenKeyEx或 RegOpenKeyTransacted函数返回。它也可以是以下 预定义的键之一:

HKEY_CLASSES_ROOT
HKEY_CURRENT_CONFIG
HKEY_CURRENT_USER
HKEY_LOCAL_MACHINE
HKEY_PERFORMANCE_DATA
HKEY_PERFORMANCE_NLSTEXT
HKEY_PERFORMANCE_TEXT
HKEY_USERS

lpValueName

注册表值的名称。

如果lpValueName为NULL或空字符串“”,则该函数将检索键的未命名或默认值(如果有)的类型和数据。

如果lpValueName指定的值不在注册表中,则该函数返回ERROR_FILE_NOT_FOUND。

键不会自动具有未命名或默认值。未命名的值可以是任何类型。

lpReserved

此参数是保留参数,必须为NULL。

lpType

指向变量的指针,该变量接收一个代码,该代码指示存储在指定值中的数据类型。所述lpType参数可以是NULL如果不需要的类型编码。

lpData

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

lpcbData

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

该参数lpcbData参数可以是NULL只有当lpData是NULL的时候。

如果数据具有REG_SZ,REG_MULTI_SZ或REG_EXPAND_SZ类型,则该大小包括任何一个或多个终止的空字符,除非数据不包含它们而存储。有关更多信息,请参见备注。

如果lpData参数指定的缓冲区不足以容纳数据,则该函数返回ERROR_MORE_DATA并将所需的缓冲区大小存储在lpcbData指向的变量中。在这种情况下,lpData缓冲区的内容未定义。

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

如果的hKey指定HKEY_PERFORMANCE_DATA和的lpData缓冲区不够大,无法容纳所有返回的数据, 函数RegQueryValueEx返回ERROR_MORE_DATA,并通过返回的值参数lpcbData参数是不明确的。这是因为性能数据的大小可以从一个调用更改为下一个调用。在这种情况下,您必须增加缓冲区大小,然后再次调用 RegQueryValueEx并在lpcbData参数中传递更新的缓冲区大小。重复此操作,直到功能成功。您需要维护一个单独的变量来跟踪缓冲区大小,因为lpcbData返回的值是不可预测的。

如果lpValueName注册表值不存在,则RegQueryValueEx返回ERROR_FILE_NOT_FOUND,并且通过lpcbData参数返回的值是不确定的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值