• 软件测试技术
  • 软件测试博客
  • 软件测试视频
  • 开源软件测试技术
  • 软件测试论坛
  • 软件测试沙龙
  • 软件测试资料下载
  • 软件测试杂志
  • 软件测试人才招聘
    暂时没有公告

字号: 小 中 大 | 推荐给好友 上一篇 | 下一篇

Win32 SDK注册表操作——RegQueryValueEx

发布: 2007-7-01 20:40 | 作者: admin | 来源: | 查看: 327次 | 进入软件测试论坛讨论

领测软件测试网

RegQueryValueEx

(更多请见)

RegQueryValueEx找回所打开注册表键所关联的一个给定值的类型和数据。

LONG RegQueryValueEx( HKEY hKey, // 要查询键的句柄 LPTSTR lpValueName, // 要查询值的名字的地址 LPDWORD lpReserved, // 保留 LPDWORD lpType, // 值类型缓存地址 LPBYTE lpData, // 数据缓存地址 LPDWORD lpcbData // 数据缓存大小地址 );

参数

hKey
一个当前已打开键的句柄或下列已确定的保留句柄值:

HKEY_CLASSES_ROOT
HKEY_CURRENT_CONFIG
HKEY_CURRENT_USER
HKEY_LOCAL_MACHINE
HKEY_USERS
Windows NT:
HKEY_PERFORMANCE_DATA
Windows 95和Windows 98: HKEY_DYN_DATA

lpValueName
指向要查询值的名字的字符串(以空字符结束)。

如果lpValueName是NULL或一个空字符串(""),这个函数找回这个键的未命名或默认值的类型和数据。

Windows 95和Windows 98: 每个键有一个默认值(最初的不包含数据)。在Windows 95,这人默认值类型总是REG_SZ。在Windows 98,默认键的类型最初是REG_SZ,但可以通过RegSetValueEx指定一个默认值为不同的类型。

Windows NT: 键不能自动拥有一个未命名或默认的值,未命名的值可以是任何类型。

lpReserved
保留,必须是NULL.
lpType
指向与给定值相关联数据的类型的变量。这个值将通过这个参数返回,将是下面之一:
值 含意
REG_BINARY 二进制数据。
REG_DWORD 一个32位数字。
REG_DWORD_LITTLE_ENDIAN 一个little-endian格式的32位数字。这相当于REG_DWORD。

little-endian格式,是一个多字节值在内存中被从低字节到高字节存贮。如,值 0x12345678在little-endian格式中被存贮为(0x78 0x56 0x34 0x12)。

Windows NT, Windows 95,和Windows 98是有意运行在little-endian计算机体系上的。例如像一些UNIX系统,一个用户必须连接到big-endian体系的计算机上。

REG_DWORD_BIG_ENDIAN 一个big-endian格式的32位数字。

big-endian格式,一个多字节值在内存职被从高字节到低字节存贮。如,值0x12345678在big-endian格式中被存贮为(0x12 0x34 0x56 0x78)。

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函数。

如果不需要类型lpType参数可以为空(NULL)。

lpData
指定接收值数据的缓存区。如果数据是不需要的这个参数可以为空。
lpcbData
以字节为单位,指向lpData参数所指定地缓存区大小的变量。函数返回复制到lpData的数据大小的变量。

如果数据是REG_SZ、REG_MULTI_SZ或REG_EXPAND_SZ类型,那么lpcbData还将包括以空字符结束的大小。

如果lpData是NULL,lpcbData参数可以是NULL。

如果被lpData参数指定的缓存不够大,这个函数返回ERROR_MORE_DATA值,并取回被lpcbData指定的变量缓存的大小(以字节为单位)。

如果lpData是NULL,lpcbData不是NULL,这个函数返回ERROR_SUCCESS,并取回被lpcbData指定的变量缓存的大小(以字节为单位)。这个为值的数据缓存分配最好的途径。

Window NT: 如果hKey指定为HKEY_PERFORMANCE_DATA,并且lpData缓存太小,RegQueryValueEx返回ERROR_MORE_DATA,但是lpcbData不能返回必需的缓存大小。这是因为运用数据的大小可以在调用的下一步被改变。在这种情形下,你必须增加缓存的大小并重新调用RegQueryValueEx通过lpcbData 参数更新缓存大小。重复直到函数成功。 你需要维护一个单独的变量去留意缓存的大小。因为被lpcbData返回的值是可不预知的。

返回值

如果这个函数成功,返回ERROR_SUCCESS。

如果调有失败,返回一个非零错误码(定义在WINERROR.H)。你可以使用带有FORMAT_MESSAGE_FROM_SYSTEM标记的函数获得错误的普通描述信息。

注意

被hKey确定的键必须是被带有KEY_QUERY_VALUE标记打开的。打开键,使用函数或函数。

如果值数据是REG_SZ、REG_MULTI_SZ或REG_EXPAND_SZ类型,这个函数的ANSI版本将被使用(明确的调用RegQueryValueExA或在包含WINDOWS.H文件前不定义UNICODE),这个函数在复制它到lpData指定的缓存中以前,转换存贮地Unicode字符串为ANSI字符串。

Window NT: 当调用RegQueryValueEx函数并hKey被设置成HKEY_PERFORMANCE_DATA句柄,给定对象的值字符串时,返回数据结构往往是未定义的对象。不要感到惊讶;这是正常的。当调RegQueryValueEx函数时,you should always expect to walk the returned data structure to look for the requested object.

快速信息

  Windows NT: 需要3.1或更高版本。
  Windows: 需要Windows 95或更高版本。
  Windows CE: 需要1.0或更高版本。
  头文件: winreg.h。
  输入库: advapi32.lib。
  Unicode: 在Windows NT中作为Unicode或ANSI执行。

参见

, , , , , , , , ,


延伸阅读

文章来源于领测软件测试网 https://www.ltesting.net/


关于领测软件测试网 | 领测软件测试网合作伙伴 | 广告服务 | 投稿指南 | 联系我们 | 网站地图 | 友情链接
版权所有(C) 2003-2010 TestAge(领测软件测试网)|领测国际科技(北京)有限公司|软件测试工程师培训网 All Rights Reserved
北京市海淀区中关村南大街9号北京理工科技大厦1402室 京ICP备2023014753号-2
技术支持和业务联系:[email protected] 电话:010-51297073

软件测试 | 领测国际 | ISTQB | ISTQB官网 | TMMi | TMMi认证 | 国际软件测试工程师认证 | 领测软件测试网