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

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

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


Declare Function RegDeleteValue Lib "advapi32.dll" Alias "RegDeleteValueA" (ByVal hKey As Long, ByVal lpValueName As String) As Long

  参数:

   hKey:Key Handle

   lpValueName: Value名称,如果想删除默认值的话,传入""[空字符串]即可。

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

  示例:

   
'我们假设在HKEY_CURRENT_USER\Software\SetValue有:
'预设值——VB操作注册表
'str1——我爱我的祖国
'我们要删除这两个Value
ret = RegOpenKey(HKEY_CURRENT_USER, "Software\SetValue", hKey)
If ret = 0 Then
RegDeleteValue hKey, "Str1"
MsgBox "已删除HKCU\Software\SetValueSubKeyStr1Value"
RegDeleteValue hKey, ""
MsgBox "已删除HKCU\Software\SetValueSubKey‘预设值’"
End If
 10.RegEnumKey——列出某Key的所有SubKey

  RegEnumKeyEx():返回注册表键及其子键的详细信息。

Declare Function RegEnumKey Lib "advapi32.dll" Alias "RegEnumKeyA" (ByVal hKey As Long, ByVal dwIndex As Long, ByVal lpName As String, ByVal cbName As Long) As Long

  参数说明:

   hKey:Key Handle

   dwIndex:欲读取的SubKey的顺序

   lpName:返回所读取的SubKey的名称

   cbName:传入lpName的字符串长度。

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

  示例:

Dim hKey As Long, ret As Long, Name As String, Idx As Long
List1.Clear
Idx = 0
Name = String(256, Chr(0))
Do
ret = RegEnumKey(HKEY_CURRENT_USER, Idx, Name, Len(Name))
If ret = 0 Then
List1.AddItem Left(Name, InStr(Name, Chr(0)) - 1)
Idx = Idx + 1
End If
Loop Until ret <> 0

  11.RegDeleteKey——删除Key或者SubKey

RegDeleteKeyEx():同RegDeleteKeyEx()
Declare Function RegDeleteKey Lib "advapi32.dll" Alias "RegDeleteKeyA" (ByVal hKey As Long, ByVal lpSubKey As String) As Long

  参数:

   hKey:Key Handle

   lpSubKey:SubKey名称或者路径,若传入""[空字符串],表示删除Key本身。

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

  示例

Dim hKey,ret As Long
ret = RegCreateKey(HKEY_LOCAL_MACHINE, "SOFTWARE\Hongqt\xiaoyuer", hKey)
ret = RegOpenKey(HKEY_LOCAL_MACHINE, "SOFTWARE\Hongqt", hKey)
ret = RegDeleteKey(hKey, "xiaoyuer")'删除HKEY_LOCAL_MACHINE\SOFTWARE\Hongqt\xiaoyuer

  注意:

  如果我们利用RegDeleteKey函数删除一个含有SubKey的Key时,对于Windows98和Winnt来讲是不一样的。比如我们把上面的删除调用改成ret = RegDeleteKey(hKey, ""),则在windows98下,它会连hongqt下的xiaoyuer一起删除,而在winnt下则会报错。

  12.RegQueryInfoKey():返回注册表键的信息,包括类名、子键数量、最长子键名、值的数量、最长值数据、安全描述符的长度以及上一次写入的时间等。

RegQueryInfoKey(ByVal hKey As Long, ByVal lpClass As String, lpcbClass As Long, ByVal lpReserved As Long, lpcSubKeys As Long, lpcbMaxSubKeyLen As Long, lpcbMaxClassLen As Long, lpcValues As Long, lpcbMaxValueNameLen As Long, lpcbMaxValueLen As Long, lpcbSecurityDescriptor As Long, lpftLastWriteTime As FILETIME)

  参数:hKey--键句柄 lpClass--类型名称,仅使用于NT。若不使用则传入Null

   lpcbClass--传入lpClass参数长度,返回读取的长度 lpReserved--保留参数补0

   lpSubKeys--返回子键的数目 lpcbMaxSubKeyLen--返回最长的子键长度

   lpcbMaxClassLen--返回最长的类长度 lpcValues--返回值的数目

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