API注册表函数

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

键管理类RegCloseKey()RegCreateKey()RegCreateKeyEx()RegDeleteKey()
 RegDeleteKeyEx()RegOpenKey()RegOpenKeyEx() 
值管理类RegDeleteValue()RegQueryValue()RegQueryValueEx()RegSetValue()
 RegSetValueEx()   
查询计数类RegQueryInfoKey()RegEnumKey()RegEnumKeyEx()RegEnumValue()
备份/恢复类RegLoadKey()RegReplaceKey()RegRestoreKey()RegSaveKey()
实用类RegConnectRegistry()RegNotifyChangeKeyValue()RegUnloadKey()
安全类
(仅适用于NT)
RegGetKeySecurity()RegSetKeySecurity() 

         以上注册表函数的细节请参阅注册表函数细节。
API注册表函数细节->>>键管理类:

1、RegCloseKey():关闭注册表键释放句柄。
     RegCloseKey(ByVal hKey As Long)
    参数:hKey--根键(或子键)句柄
     返回值:=0 成功      ≠0 失败

2、RegCreateKey():打开指定的注册表键,如果该键不存在则试图建立。
     RegCreateKey(ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long)
     参数:hKey--根键句柄     lpSubKey--子键的名称或路径     
          phkResult--若执行成功则该参数返回子键的句柄
     返回值:=0 成功      ≠0 失败

3、RegCreateKeyEx():同RegCreateKey()。

     RegCreateKeyEx(ByVal hKey As Long, ByVal lpSubKey As String, ByVal Reserved As Long, ByVal lpClass As String, ByVal dwOptions As Long, ByVal samDesired As Long, lpSecurityAttributes As SECURITY_ATTRIBUTES, phkResult As Long, lpdwDisposition As Long)


4、RegDeleteKey():删除注册表键,但不能删除根键。      
     RegDeleteKey(ByVal hKey As Long, ByVal lpSubKey As String)
     参数:hKey--键句柄      lpSubKey--子键名称或路径,如为""则删除hKey键
     返回值:=0 成功      ≠0 失败

5、RegDeleteKeyEx():同RegDeleteKeyEx()

6、RegOpenKey():获得注册表根键下子键的句柄。
     RegOpenKey(ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long)
     参数:hKey--根键句柄     lpSubKey--子键的名称或路径
          phkResult--若执行成功则该参数返回子键的句柄
     返回值:=0 成功      ≠0 失败

7、RegOpenKeyEx():同RegOpenKey()

         RegOpenKeyEx(ByVal hKey As Long, ByVal lpSubKey As String, ByVal ulOptions As Long, ByVal samDesired As Long, phkResult As Long)

 

API注册表函数细节->>>值管理类:

8、RegDeleteValue():删除指定的注册表键的某一名称。
     RegDeleteValue(ByVal hKey As Long, ByVal lpValueName As String)
     参数:hKey--键句柄         lpValueName--值名称,如要删除默认值则为""
     返回值:=0 成功      ≠0 失败


9、RegQueryValue():返回注册表键的默认值。
     RegQueryValue(ByVal hKey As Long, ByVal lpSubKey As String, ByVal lpValue As String, lpcbValue As Long)
     参数:hKey--根键句柄     lpSubKey--子键的名称或路径     
     lpValue--返回读取的默认值      lpcbValue--返回默认值字符串的长度(含Chr(0))
     返回值:=0 成功      ≠0 失败


10、RegQueryValueEx():返回注册表键的特定名称的值。
     RegQueryValueEx(ByVal hKey As Long, ByVal lpValueName As String, ByVal lpReserved As Long, lpType As Long, lpData As Any, lpcbData As Long)
     参数:hKey--键句柄     lpValueName--值名称     lpReserverd--保留参数,补上0即可
          lpType--返回值的数据类型    lpData--返回读取的数据 lpcbData--返回读取数据的长度
         返回值:=0 成功      ≠0 失败


11、RegSetValue():设置一个注册表键的缺省数据值,不能用此函数设置除了缺省值以外的任何值。
     RegSetValue(ByVal hKey As Long, ByVal lpSubKey As String, ByVal dwType As Long, ByVal lpData As String, ByVal cbData As Long)
     参数:hKey--键句柄     lpSubKey--子键名称或路径     dwType--数据类型,只能接受 REG_SZ
               lpData--所设置的字符串数据 cbData--lpData字符串的长度,须包含Chr(0)字符 
     返回值:=0 成功      ≠0 失败


 

API注册表函数细节->>>查询类:

13、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--返回值的数目      
          lpcbMaxValueName--返回最长的值项名称的长度      
          lpcbMaxValueLen--返回最长的值的长度
          lpcbSecurityDescriptor--返回安全描述,仅适用于 NT
          lpftLastWriteTime--返回键最后被写入的时间,仅适用于 NT
     
返回值:=0 成功      ≠0 失败

    
14、RegEnumKey():列举注册表键的子键的信息。
     
RegEnumKey(ByVal hKey As Long, ByVal dwIndex As Long, ByVal lpName As String, ByVal cbName As Long)
     
参数:hKey--键句柄     dwIndex--欲读取的子键的顺序     lpName--返回读取的子键的名称
          cbName--lpName参数的长度
     
返回值:=0 成功      ≠0 失败


15、RegEnumKeyEx():返回注册表键及其子键的详细信息。
     
RegEnumKeyEx(ByVal hKey As Long, ByVal dwIndex As Long, ByVal lpName As String, lpcbName As Long, ByVal lpReserved As Long, ByVal lpClass As String, lpcbClass As Long, lpftLastWriteTime As FILETIME)


 

API注册表函数细节->>>备份恢复类:

17、RegLoadKey():从指定的文件恢复注册表键的子键信息到注册表。
     RegLoadKey(ByVal hKey As Long, ByVal lpSubKey As String, ByVal lpFile As String)

     18、RegReplaceKey():从指定的文件恢复注册表键的子键信息到注册表并替换原有的值。
     RegReplaceKey(ByVal hKey As Long, ByVal lpSubKey As String, ByVal lpNewFile As String, ByVal lpOldFile As String)


19、RegRestoreKey():仅适用于Windows NT。从指定的文件中读取注册表键的信息并覆盖注册表中原有的值。
     RegRestoreKey(ByVal hKey As Long, ByVal lpFile As String, ByVal dwFlags As Long)


 

API注册表函数细节->>>实用类:

21、RegConnectRegistry():连接到远程系统的注册表。
     RegConnectRegistry(ByVal lpMachineName As String, ByVal hKey As Long, phkResult As Long)


22、RegNotifyChangeKeyValue():当修改指定的注册表对象时提供通知。
     RegNotifyChangeKeyValue(ByVal hKey As Long, ByVal bWatchSubtree As Long, ByVal dwNotifyFilter As Long, ByVal hEvent As Long, ByVal fAsynchronus As Long)


23、RegUnloadKey():删除注册表键及其所有的子键。
     RegUnLoadKey(ByVal hKey As Long, ByVal lpSubKey As String)

API注册表函数细节->>>安全类:

24、RegGetKeySecurity():检索指定键的安全信息。
     RegGetKeySecurity(ByVal hKey As Long, ByVal SecurityInformation As Long, pSecurityDescriptor As SECURITY_DESCRIPTOR, lpcbSecurityDescriptor As Long)


 

根键句柄
     注册表的每个根键句柄都是固定不变的,如下表所示:

键名句柄键名句柄
HKEY_CLASSES_ROOT&H80000000HKEY_DYN_DATA&H80000006
HKEY_CURRENT_CONFIG&H80000005HKEY_LOCAL_MACHINE&H80000002
HKEY_CURRENT_USER&H80000001HKEY_USERS&H80000003

注册表数据类型
     程序中要用到的注册表数据类型如下表所示:

REG_BINARY二进制数据
REG_DWORD32位双字
REG_DWORD_LITTLE_ENDIAN大计数法格式32位数字,一个字的有效字节是高端字
REG_DWORD_BIG_ENDIAN大计数法格式32位数字,一个字的有效字节是低端字
REG_EXPAND_SZ空终止字符串,包括对"&TEMP&"之类环境变量的引用
REG_LINK单一代码符号链
REG_MULTI_SZ定义包括空终止字符串的数组,数组被两个实际的空字符串结束
REG_NONE未定义值类型
REG_RESOUSE_LIST设备驱动程序列表
REG_SZ空字符串,是保存字符串的最通用格式

25、RegSetKeySecurity():设置指定键的安全信息。
     RegSetKeySecurity(ByVal hKey As Long, ByVal SecurityInformation As Long, pSecurityDescriptor As SECURITY_DESCRIPTOR) 
20、RegSaveKey():保存键及其子键信息到指定的文件。
     RegSaveKey(ByVal hKey As Long, ByVal lpFile As String, lpSecurityAttributes As SECURITY_ATTRIBUTES) 
16、RegEnumValue():列举注册表键的所有名称的值。
     
RegEnumValue(ByVal hKey As Long, ByVal dwIndex As Long, ByVal lpValueName As String, lpcbValueName As Long, ByVal lpReserved As Long, lpType As Long, lpData As Byte, lpcbData As Long)
     
参数:hKey--键句柄    dwIndex--欲读取名称的顺序   lpValueName--返回所读取的名称
          lpcbValueName--返回读取的名称的长度       lpReserved--保留参数,补上0
          lpType--返回读取的数据类型       lpData--返回读取的数据      lpcbData--返回读取的数据的长度
     
返回值:=0 成功      ≠0 失败
12、RegSetValueEx():设置注册表键特定名称的值,如果数据不存在则创建它。
     RegSetValueEx(ByVal hKey As Long, ByVal lpValueName As String, ByVal Reserved As Long, ByVal dwType As Long, lpData As Any, ByVal cbData As Long)
     参数:hKey--键句柄     lpValueName--值项名称     Reserved--保留参数,补上0   dwType--数据类型 
           lpData--所设置的数据        cbData--lpData数据的长度,须包含Chr(0)字符
   
      返回值:=0 成功      ≠0 失
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值