设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
查看: 3202|回复: 4
打印 上一主题 下一主题

调用 API 函数来操作注册表?

[复制链接]
跳转到指定楼层
1#
发表于 2002-9-25 20:56:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
虽然VB本身提供了四个关于注册表的函数,但是这四个函数只能在标准位置即“HKEY_CURRENT_USER\Software\VB and VBA ProgramSettings”下读取、删除、修改键值。对于一般的应用程序,利用它们就可以达到您的目的,对于特殊的要求利用它们就显得无能为力了。在 Visual Basic 中除了使用这四个内部语句或函数外,还可以调用 Windows API 函数来操作注册表。

  所谓 API(Application Programing Interface) 是 Windows 提供的一个32位环境下的应用程序编程接口,其中包括了众多的函数,提供了相当丰富的功能。我们在编制应用程序时,可以调用其中的注册表函数来对注册表进行操作以实现我们需要的功能。Windows API 中可用于注册表的函数一共有二十多个,根据其功能不同可以分为如下几类:

  1.键管理类

   RegCloseKey() RegCreateKey() RegCreateKeyEx() RegDeleteKey() RegDeleteKeyEx() RegOpenKey() RegOpenKeyEx()

  2.值管理类

   RegDeletevalue() RegQueryvalue() RegQueryvalueEx() RegSetvalue() RegSetvalueEx()

  3.查询计数类

   RegQueryInfoKey() RegEnumKey() RegEnumKeyEx() RegEnumvalue()

  4.备份/恢复类

   RegLoadKey() RegReplaceKey() RegRestoreKey() RegSaveKey()

  5.实用类

   RegConnectRegistry() RegNotifyChangeKeyvalue() RegUnloadKey()

  6.安全类(仅适用于NT)

   RegGetKeySecurity() RegSetKeySecurity()

  下面详细介绍这几个Windows API 函数的用法:

  1. RegOpenKey——取得SubKey的Hkey

    RegOpenKeyEx():同RegOpenKey()

  VB声明 Declare Function RegOpenKey Lib "advapi32.dll" Alias "RegOpenKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long

  参数类型及说明:

  hKey:Key Handle

  lpSubKey:SubKey名称或路径

  phkResult:若RegOpenKey执行成功,则这一参数返回Subkey的hKey.

  返回值: =0,表示成功;≠0,表示失败。[注意这一点与别的API函数不太一样]

  示例:

ret = RegOpenKey(HKEY_LOCAL_MACHINE,
         "SOFTWARE\Microsoft", hKey)

  2.RegCreateKeyEx、RegCreateKey函数:建立SubKey

  VB声明 Declare Function RegCreateKey Lib "advapi32.dll" Alias "RegCreateKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
 
  它的参数用法与RegOpenKey一样。所不同的是RegOpenKey只能打开已经有的SubKey,而RegCreateKey则可以建立SubKey,比较特别的是,如果调用RegCreateKey所建立的SubKey是一个已经存在的SubKey,则它的功能和RegOpenKey相同。由于RegCreateKey的这种特性,有的程序员干脆不用RegOpenKey,而用RegCreateKey来统一代替RegOpenKey。

  示例:

ret = RegCreateKey(HKEY_LOCAL_MACHINE, "SOFTWARE\Hongqt", hKey)

  3.RegClose函数:关闭SubKey

   Declare Function RegCloseKey Lib "advapi32.dll"
            (ByVal hKey As Long) As Long

  当我们不再存取Registry时,将打开或建立的SubKey关闭是一个比较好的习惯,就正如我们在使用C语言的文件打开函数后必须要关闭一样。

  示例:

ret = RegOpenKey(HKEY_LOCAL_MACHINE, "SOFTWARE\Microsoft", hKey)
……
RegClose hkey

4.RegQueryvalue——读取某Key的默认值(default value)

  VB声明

Declare Function RegQueryvalue Lib "advapi32.dll" Alias "RegQueryvalueA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal lpvalue As String, lpcbvalue As Long) As Long
hKey: Key Handle

   lpSubKey:SubKey名称路径

   lpvalue:返回读取的Default value

   lpcbvalue:传入lpvalue参数的长度,若成功读取了默认值default value,则返回default value字符串的长度(含chr(0))这个和C语言中字符串的处理相似,都是以chr(0)作为结束符。

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

   示例:

ret = RegQueryvalue(hKey, Subkey, "", lenS)

  5.RegSetvalue——删除某Key的默认值(default value)

  VB声明

Declare Function RegSetvalue Lib "advapi32.dll" Alias "RegSetvalueA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal dwType As Long, ByVal lpData As String, ByVal cbData As Long) As Long

   hKey:Key Handle

   lpSubKey:Subkey名称或路径

   dwType:数据类型,但在这里只能接受REG_SZ[字符串类型]

   lpData:所设置的字符串

   cbData:lpData字符串的长度,这一长度包括chr(0)字符。

   关于dwType的可能取值

    Enum valueType

    REG_NONE = 0

    REG_SZ = 1

    REG_EXPA
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
2#
发表于 2007-2-17 07:08:00 | 只看该作者
好东西哦!谢谢版主!
3#
发表于 2009-7-12 07:18:23 | 只看该作者
好东西哦!谢谢版主!
4#
发表于 2009-9-27 09:28:52 | 只看该作者
谢谢分享。
5#
发表于 2010-10-4 02:22:56 | 只看该作者
再次谢谢分享。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2025-1-6 06:36 , Processed in 0.089414 second(s), 28 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表