API注册表函数【转】

限时加码!20+主流AI编程工具免费用 购周边加赠Coding Plan Lite,Claude Code、Cursor等即刻畅享,学习进阶更高效! 阅读详情

所谓 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 失
windows函数注册表函数 比较详细的windows操作系统中的注册表操作函数集合。 阅读详情

相关推荐

备份注册表新方法

<br />在windows api函数中有几个是用来备份和还原注册表的:<br /> <br />RegLoadKey 读取文件中的信息<br />RegReplaceKey 用新的注册表信息更新注册表项<br />RegRestoreKey 从文件中恢复注册表项或子项信息<br />RegSaveKey 保存注册表项或子项中的信息<br /><br />笔者今天对RegSaveKey函数研究了一下,果然可以将注册表中的数据保存到文件中。<br />嘻嘻,下面是主要的代码<br />static HAND

mr_vc_bccd的专栏 750

RegReplace:简单的查找和替换Sublime Text http的音序器插件

关于 Reg Replace是Sublime Text的插件,允许创建由查找和替换指令序列组成的命令。 特征 创建查找和替换规则,然后可使用这些规则创建可随时调用的Sublime命令。 将多个正则表达式查找和替换规则链接在一起。 创建可以按语法范围过滤正则表达式结果的规则。 创建针对特定范围的规则,并将正则表达式应用于内容。 创建突出显示结果并需要在替换之前进行确认的命令。 创建查找和折叠/展开命令以折叠或展开查找结果,而不是替换它们。 创建查找和标记/取消标记命令以仅突出显示或取消突出显示结果,而不是替换它们。 创建查找和选择命令以选择某些结果,而不是替换它们。 创建可以运行插件的高级命令,以执行更复杂的替换。 文献资料 执照 Reg Replace是根据MIT许可证发布的。 版权所有(c) Isaac Muse 特此免费授予获得此软件和相关文档文件(“软件”)副

精通NT本机API实现注册表操作

应用程序接口(Application Programming Interface,简称API)是软件系统中预定义的一系列函数、协议和工具,它为开发者提供了使用操作系统、库或服务的功能。API定义了不同软件组件之间交互的方式,使得开发者可以通过简洁明了的方式编写软件,而无需了解底层的复杂实现。在操作系统中,API作为与系统交互的“窗口”,使得应用程序能够调用系统资源、管理硬件设备、访问网络服务等。它们通常包括用于文件操作、进程和线程管理、内存访问等操作的函数

weixin_36012152的博客 989

API注册表函数

 2007年03月27日 星期二 16:28所谓 API(Application Programing Interface) 是 Windows 提供的一个32位环境下的应用程序编程接口,其中包括了众多的函数,提供了相当丰富的功能。我们在编制应用程序时,可以调用其中的注册表函数来对注册表进行操作以实现我们需要的功能。Windows API 中可用于注册表函数一共有二十

lugz1981的专栏 712

RegConnectRegistry函数

RegConnectRegistry函数在另一台计算机上建立到预定义注册表键的连接。LONG RegConnectRegistry( LPCTSTR lpMachineName, // 计算机名称 HKEY hKey, // 预定义的注册表处理 PHKEY phkResult // 用于远程关键句柄的缓冲区。 );参数lpMachineName:指...

ke_yi_的博客 1641

注册表API函数

注册表的操作,API为我们提供了大约25个函数。他提供了对注册表的读取,写入,删除,以及打开注册表及键值时所有函数,并且可以达到对注册表的备份,连接和对远端注册表进行查看等等。注册表对整个系统十分重要,你在进行操作时,一定要先考虑清楚。这些函数有: RegCloseKey RegConnectRegistry RegCreateKey RegCreateKeyEx RegDeleteKey...

weixin_34161064的博客 374

用HOOK来修改API函数的功能(1)-注册表()

版权声明:原创作品,允许载,载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://fxh7622.blog.51cto.com/63841/30324 我们知道编程实际上是使用各种API函数来达到我们想要的目的。换句话说就是API函数是我们通常编程时使用到的最底层函数。很多人也觉得除了API函数微软没有在提供

gxj1680的专栏 773

使用API函数修改注册表

使用API函数修改注册表 为了让自己的程序成为自动启动需要修改注册表。下面事例可以供参考 Option Explicit Const REG_SZ = 1Global Const HKEY_LOCAL_MACHINE = &H80000002 Public Declare Function RegOpenKey Lib "advapi32" Alias "RegOpenKeyA" _    (By

洪虎专栏 1564

Windows 注册表相关API总结

一、注册表简介 注册表实际上是一个管理配置系统运行参数的核心数据库,它记录了安装软件与运行程序的关联关系,计算机的硬件配置等信息。可以说计算机上所有针对硬件、软件、网络的操作都是源于注册表的。 可以使用 regedit.exe 这个系统提供的注册表编辑器去管理编辑注册表,他只是一个编辑器不是注册表的文件。 如上图所示,注册表预设有五个根键: HKEY_CLASSES_ROOT HKEY_CURRENT_USER HKEY_LOCAL_MACHINE HKEY_USER HKEY_CURRENT_CONFI

空持百千偈的博客 4971

操作注册表API函数介绍(RegCreateKeyEx:该函数用来创建注册表键,如果该键已经存在,则打开它)

 RegCreateKeyEx该函数用来创建注册表键,如果该键已经存在,则打开它(注册表键不区分大小写)LONG RegCreateKeyEx(  HKEY hKey,  LPCTSTR lpSubKey,  DWORD Reserved,  LPTSTR lpClass,  DWORD dwOptions,  REGSAM samDesired,  LPSECURITY_ATTRIBUT

懒人程序员的学习过程 1万+

Win32 API 常用函数之三——注册表操作(上)

注册表操作】RegOpenKeyExLONG RegOpenKeyEx(  HKEY hKey,  LPCTSTR lpSubKey,  DWORD ulOptions,  REGSAM samDesired,  PHKEY phkResult);打开一个指定的注册表项,值得注意的是注册表的键值是不区分大小写的。第一个参数是主键,可以是预定义的键值,如HKEY_CLASSES

深红 6612

windows注册表 api

注册表的操作,API为我们提供了大约25个函数。他提供了对注册表的读取,写入,删除,以及打开注册表及键值时所有函数,并且可以达到对注册表的备份,连接和对远端注册表进行查看等等。注册表对整个系统十分重要,你在进行操作时,一定要先考虑清楚。这些函数有:  RegCloseKey RegConnectRegistry  RegCreateKey  RegCreateKeyEx  RegDeleteKe

end_ing的专栏 1938

利用Windows API函数注册表获取系统信息

利用Windows API函数注册表获取系统信息 作者: 评价: 上站日期: 2004-04-18 内容说明: 来源: 在开发应用程序时,增加一项显示计算机系统信息的功能,例如已安装的软盘、硬盘、光驱、网络驱动器,硬盘的容量和剩余空间,显示器分辨率、键盘类型、鼠标的键数,内存大小、CPU类型,Windows的版本号、产品

tangkuai的专栏 1502

API修改注册表的完整模块

有些老掉牙了,这是很久以前写的了,觉得功能已经比较完善了。下载地址:http://csdngoodname008.51.net/mRegistry.zip 这是我用这个模块写过的一个软件:注册表大师 2.0http://www.onlinedown.net/soft/16780.htm 标准模块代码:**********************************

★卢培培★ ── 欢迎光临卢培培(goodname008)的BLOG 4078

注册表API函数和获取系统版本

注册表API函数,获取系统版本

Jiangislogining的博客 1663

有关注册表API函数

 注册表的操作,API为我们提供了大约25个函数。他提供了对注册表的读取,写入,删除,以及打开注册表及键值时所有函数,并且可以达到对注册表的备份,连接和对远端注册表进行查看等等。注册表对整个系统十分重要,你在进行操作时,一定要先考虑清楚。这些函数有: RegCloseKey RegConnectRegistry  RegCreateKey  RegCreateKeyEx  RegDeleteKey

StoneRain 2730

[]如何使用python修改注册表

自:如何使用python修改注册表其他参考文章:http://blog.csdn.net/lvming404/article/details/4017009 http://my.oschina.net/ldl123292/blog/227249与注册表操作相关的函数可以分为打开注册表、关闭注册表、读取项值、c添加项值、添加项,以及删除项等几类。

mwmoo的博客 3048

载】win32api 修改注册表

注册表操作相关的函数可以分为打开注册表、关闭注册表、读取项值、c添加项值、添加项,以及删除项等几类。 表1 Windows注册表基本项 项名 描述 HKEY_CLASSES_ROOT 是HKEY_LOCAL_MACHINE\Software 的子项,保存打开文件所对应的应用程序信息 HKEY_CURRE...

weixin_30414635的博客 2189

C#中使用Win32 API实现注册表监控的指南

Win32 APIWindows 32位应用程序接口)是微软公司为软件开发者提供的编程接口,用于与Windows操作系统交互。API提供了丰富的函数,允许开发者控制系统的各个方面,从显示窗口到访问硬件资源。本章我们将对Win32 API进行一个基本的介绍,为理解后续章节中如何利用这些API进行注册表操作奠定基础。Win32 API的使用涉及对函数、参数、数据类型和常量的深入理解。它提供了一种直接与Windows操作系统进行交互的方式,是许多系统级应用和高级编程的基础。

weixin_34392511的博客 948
上一篇: 让vi编辑器自动缩进
下一篇: ShellExecute使用详解【转】
clearver
博客等级 码龄17年 117粉丝 15原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值