RegEnumValue函数枚举指定打开的注册表项的值。该函数在每次调用时复制一个索引值名称和数据块。
LONG RegEnumValue(
HKEY 【的hKeyru-Latn】, | //查询键的句柄 |
DWORD 【dwIndex】, | //查询值的索引 |
LPTSTR 【lpValueName】, | //值为缓冲区的值字符串的地址 |
LPDWORD 【lpcbValueName】, | //值为缓冲区大小的地址 |
LPDWORD 【lpReserved】, | //保留 |
LPDWORD 【//值类型缓冲区的地址】, | //类型代码的缓冲区地址 |
LPBYTE 【的lpData】, | //数据缓冲区的地址 |
LPDWORD 【参数lpcbData】 | //数据缓冲区大小的地址 |
); |
参数
【的hKeyru-Latn】
标识当前打开的键或任何以下预定义保留句柄值:
HKEY_CLASSES_ROOT
HKEY_CURRENT_USER
HKEY_LOCAL_MACHINE
HKEY_USERS
枚举的值与由【的hKeyru-Latn】标识的键相关联。
【dwIndex】
指定要检索的值的索引。对于第一次调用RegEnumValue函数,此参数应为零,然后为后续调用递增。
因为值没有被排序,任何新的值都将有一个任意的索引。这意味着该函数可以以任何顺序返回值。
【lpValueName】
指向接收值名称的缓冲区,包括终止空字符。
【lpcbValueName】
指向一个变量,指定【lpValueName】参数指向的缓冲区的大小(以字符为单位)。这个大小应该包括终止空字符。当函数返回时,【lpcbValueName】指向的变量包含缓冲区中存储的字符数。返回的计数不包括终止空字符。
【lpReserved】
Reserved; must be NULL.
【//值类型缓冲区的地址】
指向接收值输入的类型代码的变量。类型代码可以是以下值之一:
值 | 含义 |
REG_BINARY | 任何形式的二进制数据。 |
REG_DWORD | 一个32位数字。 |
REG_DWORD_LITTLE_ENDIAN | 32位数字的小端格式(与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】参数指向的缓冲区的大小(以字节为单位)。当函数返回时,【参数lpcbData】参数指向的变量包含存储在缓冲区中的字节数。只有当【的lpData】为NULL时,此参数可以为NULL。
返回值
如果函数成功,则返回值为ERROR_SUCCESS。
如果函数失败,返回值是在WINERROR.H中定义的非零错误代码。您可以使用带有FORMAT_MESSAGE_FROM_SYSTEM标志的FormatMessage函数来获取错误的一般描述。
备注
要枚举值,应用程序最初应调用RegEnumValue函数,将【dwIndex】参数设置为零。然后应用程序将增加【dwIndex】并调用RegEnumValue函数,直到没有更多值(直到函数返回ERROR_NO_MORE_ITEMS)为止。
应用程序还可以将【dwIndex】设置为对该函数的第一次调用的最后一个值的索引,并减少索引,直到枚举索引为0的值为止。要检索最后一个值的索引,请使用RegQueryInfoKey函数。
使用RegEnumValue时,应用程序不应调用可能更改正在查询的密钥的任何注册功能。
必须使用KEY_QUERY_VALUE访问权限打开【的hKeyru-Latn】参数确定的密钥。要打开该键,请使用RegCreateKeyEx或RegOpenKeyEx功能。
要确定名称和数据缓冲区的最大大小,请使用RegQueryInfoKey功能。
也可以看看
RegCreateKeyEx, RegEnumKey, RegEnumKeyEx, RegOpenKeyEx, RegQueryInfoKey