新客网WWW.XKER.COM:致力做中国最专业的网络学院!
学院: 操作系统 - 网络应用 - 服务器 - 网络安全 - 工具软件 - 办公软件 - Web开发 - 数据库 - 网页设计 - 图形图像 - 媒体动画 - 硬件学堂 - 存储频道 - QQ专区
您的位置:首页 > 网络学院 > 操作系统 > 注册表 > 注册表编程 > 正文:编程解决注册表问题所需的函数详解

编程解决注册表问题所需的函数详解

新客网 XKER.COM 2006-06-28 来源: 收藏本文


  VB声明和参数解释:

Declare Function RegQueryValueEx Lib "advapi32.dll" Alias "RegQueryValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal lpReserved As Long, lpType As Long, lpData As Any, lpcbData As Long) As Long

  hkey:Key Handle

  lpValueName:Value Name

  lpReserved:保留参数,调用时设置为0即可

  lpType:返回读取的数据类型

  lpData:返回读取的数据

  lpcbData:传入lpData数据的长度,若成功读取数据,则返回所读取的数据的长度。

   返回值: =0,表示成功;≠0,表示失败。

  说明:

  ① 这一函数除了可读取指定名称的值之外,也可以读取default value。如果要读取default value,只需要将参数lpValueName设置为""[空字符串]即可。

  ②lpType 的可能取值

  Enum ValueType

  REG_NONE = 0

  REG_SZ = 1 ——>字符串

  REG_EXPAND_SZ = 2 ——>可展开式字符串

  REG_BINARY = 3 ——>Binary数据

  REG_DWORD = 4 ——>长整数

  REG_DWORD_BIG_ENDIAN = 5 ——>BIG_ENDIAN长整数

  REG_MULTI_SZ = 7 ——>多重字符串

  End Enum

  示例:

Dim hKey As Long, ret As Long, lenData As Long, typeData As Long
Dim Name As String
'读取HKEY_LOCAL_MACHINE\Software\Microsoft
'\Windows\CurrentVersion\Run的internat.exe的value.
Name="internat.exe"
ret=RegOpenKey(HKEY_LOCAL_MACHINE,
   "Software\Microsoft\Windows\CurrentVersion\Run", hKey)
if ret=0 then
ret = RegQueryValueEx(hKey, Name, 0, typeData,
   ByVal vbNullString, lenData)'注意ByVal千万别忘了
end if
7.RegEnumValue——列出某Key的所有名称的值

Declare Function RegEnumValue Lib "advapi32.dll" Alias "RegEnumValueA" (ByVal hKey As Long, ByVal dwIndex As Long, ByVal lpValueName As String, lpcbValueName As Long, lpReserved As Long, lpType As Long, lpData As Byte, lpcbData As Long) As Long

   参数说明:

    hKey:Key Handle

    dwIndex:欲读取之名称的顺序

    lpValueName:返回所读取的名称

    lpcbValueName:传入lpValueName参数的长度,返回所读取的名称的长度,注意这一长度不含chr(0)

    lpReserved:保留参数,实际使用时传入ByVal 0即可

    lpType:返回所读取的数据类型

    lpData:返回所读取的数据

    lpcbData:传入lpData,返回所读取的数据长度

    返回值: =0,表示成功;≠0,表示失败。

  示例:

ret=0
myindex=0
while ret=0
ret=RegEnumValue(hkey,myindex,Name,ByVal 0, typeData, ByVal vbNullString, lenData)
myindex=myindex+1
wend

  8.RegSetValueEx——设置某Key特定名称的值(Value)

Declare Function RegSetValueEx Lib "advapi32.dll" Alias "RegSetValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal Reserved As Long, ByVal dwType As Long, lpData As Any, ByVal cbData As Long) As Long

  参数:

   hKey:Key Handle

   lpValueName:Value名称

   Reserved:保留参数,具体使用时置为0即可

   dwType:数据类型

   lpData:所设置的数据,注意这一参数被定义成lpData As Any,所以要传入字符串数据时别忘了在参数前加保留字ByVal

   cbData:数据的长度。注意:如果写入的数据属于REG_SZ、REG_EXPAND_SZ、REG_MULTI_SZ类型时,则这个长度应该包含chr(0)字符。

   返回值: =0,表示成功;≠0,表示失败。

  示例:

Dim hKey As Long
Dim L As Long
L = 99999
RegCreateKey HKEY_CURRENT_USER, "Software\SetValue", hKey
RegSetValueEx hKey, "LongData", 0, REG_DWORD, L, 4

  9.RegDeleteValue——删除某Key的某一名称

收藏】 【评论】 【推荐】 【投稿】 【打印】 【关闭
发表评论
要记得去论坛讨论,点击注册新会员匿名评论
评论内容:不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规。
阅读排行
随机推荐
实用信息推荐