`
isiqi
  • 浏览: 16485493 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

有关注册表API函数

阅读更多
注册表的操作,API为我们提供了大约25个函数。他提供了对注册表的读取,写入,删除,以及打开注册表及键值时所有函数,并且可以达到对注册表的备份,连接和对远端注册表进行查看等等。注册表对整个系统十分重要,你在进行操作时,一定要先考虑清楚。这些函数有:
RegCloseKeyRegConnectRegistry RegCreateKey RegCreateKeyEx RegDeleteKey RegDeleteVale
RegEnumKey RegFlushKey RegGetKeySecurity(此函数,98不适用) RegLoadKey
RegNotifyChangeKeyValue(98不适用) RegOpenKey RegOpenKeyEx RegQueryInfoKey RegQueryValue
RegQueryValueEx RegReplaceKey RegRestoreKey(98不适用)RegSaveKey RegSetKeySecurity(98不适用) RegSetValue RegSetValueEx RegUnLoadKey
我们对经常使用的几个函数进行介绍。
1·RegClose()
原形:LONG RegCloseKey(
HKEY hKey // 释放已经打开的注册表句柄
);
返回值:不成功返回非0,成功返回ERROR_SUCCESS
解释:关闭指定的主册表键,释放句柄。当对一个或多个键或值操作完成以后,需要关闭其键来进行保存操作结果。关闭一个键后,句柄变为非法,以使其不可再次被使用。为系统重新使用而释放句柄。
例子
BOOL bRet = TRUE;
if( m_hKey == NULL )
return( FALSE );
bRet = ( ::RegCloseKey( m_hKey ) == ERROR_SUCCESS );
m_hKey = NULL;
return( bRet );

2·RegCreateKeyEx()和RegCreateKey()
原形:LONG RegCreateKeyEx(
HKEY hKey,// 主键名称
LPCTSTR lpSubKey, // 子键名称或路径
DWORD Reserved, // 保留,为0
LPTSTR lpClass, // 没弄懂,我设为空也差不多
DWORD dwOptions,
/* 对你建立的键的一些选项,可以是这些值:REG_OPTION_NON_VOLATILE,REG_OPTION_VOLATILE,REG_OPTION_BACKUP_RESTORE第一个是默认的了。一般用第一个就可以了。*/
REGSAM samDesired,// 设置你对你建立的这个键的访问权限
LPSECURITY_ATTRIBUTES lpSecurityAttributes,
//不太明白
PHKEY phkResult,// 指向你建的句柄
LPDWORD lpdwDisposition //用来查看是打开一个已经有的键,还是新建了键
);
RegCreateKey()函数简单了不少,请自己看了。
返回值:不成功返回非0,成功返回ERROR_SUCCESS.
解释:打开指定的键或子键。如果要打开的键不存在的话,本函数会试图建立它。当在创建或打开注册表的键时,需要指定访问权限,而这些访问权限需要到一级。默认的权限是KEY_ALL_ACCESS权限。还有KEY_CREATE_LINK创建字符链权限,KEY_CREATE_SUB_KEY创建子键权限,KEY_EXECUTE读取键权限,KEY_NOTIFY获得修改键通知的权限,KEY_QUERY_VALUE查询键值的权限,KEY_SET_VALUE设置数据值的权限。注意不能在根一级建键,在注册表的根一级仅可有预定义的键。具体使用,请查看联机手册。
例子:
HKEY m_hkey;
DWORD dwDisposition;
long ret0=(::RegCreateKeyEx
(HKEY_CURRENT_USER,"REGD\\",0,NULL,
REG_OPTION_NON_VOLATILE,KEY_ALL_ACCESS,NULL,&m_hkey,&dwDisposition));
if(ret0!=ERROR_SUCCESS) //如果无法打开hKEY,则终止程序的执行
{
MessageBox("错误: 无法打开有关的hKEY!");
return;
}
if(dwDisposition==REG_OPENED_EXISTING_KEY)
MessageBox("打开了一个已经存在的键");
else
{
if(dwDisposition==REG_CREATED_NEW_KEY)
MessageBox("建立一个新键");
}
RegClosekey(m_hkey);

3·RegOpenKey()和RegOpenKeyEx()
原形:LONG RegOpenKeyEx(
HKEY hKey, // 要打开主键名
LPCTSTR lpSubKey,// 子键或路径
DWORD ulOptions, // 保留,为0
REGSAM samDesired, // 操作权限标志
PHKEY phkResult// 指向你打开键的句柄
);
返回值:不成功返回非0,成功返回ERROR_SUCCESS.
解释:该函数负责打开指定的键或子键,如果不存在他不建立。其他和RegCreateKeyEx()和RegCreateKey()基本相同。

4·RegDeleteKey()
原形:LONG RegDeleteKey(
HKEY hKey, // 已打开的键的句柄
LPCTSTR lpSubKey // 要删除的子键或路径,传如""将删除key本身
);
返回值:不成功返回非0,成功返回ERROR_SUCCESS
该函数用来删除注册表中的一个键值的。在用此函数时需要注意98与NT的差异。在NT中在删除一个键之前,要求必须删除所有子键,需要从下向上递归删除所有子键,而WINDOWS98没有他那么复杂,只要删除键及其所有子键就可以啦。

5·RegQueryValue()和RegQueryValueEx()
原形:LONG RegQueryValueEx(
HKEY hKey, // 已打开的键的句柄
LPTSTR lpValueName,// 要查询值的名称,传如""为查询键下的默认值
LPDWORD lpReserved,// 保留,为0
LPDWORD lpType,// 查询的类型
LPBYTE lpData, // 数据存放的地址
LPDWORD lpcbData // 数据长度+1
);
返回值:不成功返回非0,成功返回ERROR_SUCCESS
解释:读取某子键下特定名称的值。
例子
CString m_strQ;//用来存放查询来的字符串值
DWORD m_dwCount;//记录字符串的长度+1(包括NULL字符)
::RegQueryValueEx(m_hkey,"",0,NULL,NULL,&m_dwCount);//先查询出字节空间
ret1=(::RegQueryValueEx
(m_hkey,"",0,NULL,(unsigned char *)m_strQ.GetBuffer(m_dwCount),&m_kk));
m_strQ.ReleaseBuffer();
MessageBox(m_strQ);

6·RegSetValue()和RegSetValueEX()
原形:LONG RegSetValueEx(
HKEY hKey, // 已打开的键的句柄
LPCTSTR lpValueName, // 要查询值的名称,传如""为查询键下的默认值
DWORD Reserved,// 保留
DWORD dwType,// 变量的类型
CONST BYTE *lpData,// 变量数据的地址
DWORD cbData // 变量的长度
);
返回值:不成功返回非0,成功返回ERROR_SUCCESS
解释:设置某子键下特定名称的值。

7·RegEnumValue()
原形:LONG RegEnumValue(
HKEY hKey,// 要查询的已打开的键的句柄
DWORD dwIndex,// 读取名称的索引号
LPTSTR lpValueName, // 返回所读取的名称
LPDWORD lpcbValueName,// 返回读取名称的长度,不含chr(0)
LPDWORD lpReserved, // 保留,为0
LPDWORD lpType, // 返回所读取的数据类型
LPBYTE lpData,// 返回所读取的数据
LPDWORD lpcbData// 返回所读取的数据长度
);
返回值:不成功返回非0,成功返回ERROR_SUCCESS
解释:列出某Key的所有名称的值,变化索引即可遍历整个键下的名称和数据。

8·RegDeleteValue()
原形:LONG RegDeleteValue(
HKEY hKey,// 要删除的键的句柄
LPCTSTR lpValueName // 要删除的名称
);
返回值:不成功返回非0,成功返回ERROR_SUCCESS
解释:删除某Key的某一名称

9·RegEnumKey()和RegEnumKeyEx()
原形:LONG RegEnumKeyEx(
HKEY hKey,// 要列举的键的句柄
DWORD dwIndex,// 索引
LPTSTR lpName,// 子键的名称
LPDWORD lpcbName, // 子键名称的长度
LPDWORD lpReserved, // 保留
LPTSTR lpClass, // address of buffer for class string
LPDWORD lpcbClass,// address for size of class buffer
PFILETIME lpftLastWriteTime
// address for time key last written to
);
返回值:不成功返回非0,成功返回ERROR_SUCCESS
返回注册表键及其子键的详细信息。

10·RegQueryInfoKey()
原形:LONG RegQueryInfoKey(
HKEY hKey,// 已打开的键的句柄
LPTSTR lpClass, // 类型名称,仅使用于NT。若不使用则传入Null
LPDWORD lpcbClass,// 类型名称的长度
LPDWORD lpReserved, // 保留
LPDWORD lpcSubKeys, // 返回子键的数目
LPDWORD lpcbMaxSubKeyLen,// 返回最长的子键长度
LPDWORD lpcbMaxClassLen,// 返回最长的类长度
LPDWORD lpcValues,// 返回值的数目
LPDWORD lpcbMaxValueNameLen,// 返回最长的值项名称的长度
LPDWORD lpcbMaxValueLen,// 返回最长的值的长度
LPDWORD lpcbSecurityDescriptor,//返回安全描述,仅适用于 NT
PFILETIME lpftLastWriteTime // 返回键最后被写入的时间,仅适用于 NT
);
返回值:不成功返回非0,成功返回ERROR_SUCCESS
解释:返回注册表键的信息,包括类名、子键数量、最长子键名、值的数量、最长值数据、安全描述符的长度以及上一次写入的时间等。

11·RegLoadKey()
原形:LONG RegLoadKey(
HKEY hKey, // 打开的句柄
LPCTSTR lpSubKey,//子键的路径
LPCTSTR lpFile // 要写入注册表信息的文件
);
返回值:不成功返回非0,成功返回ERROR_SUCCESS
解释:从指定的文件恢复注册表键的子键信息到注册表。

12·RegReplaceKey()
原形:LONG RegReplaceKey(
HKEY hKey, // handle to open key
LPCTSTR lpSubKey,// address of name of subkey
LPCTSTR lpNewFile, // 在替换前生成新的备份文件
LPCTSTR lpOldFile// 需要覆盖上注册表的文件
);
返回值:不成功返回非0,成功返回ERROR_SUCCESS
解释:从指定的文件恢复注册表键的子键信息到注册表并替换原有的值,并生成新的备份文件

13· RegSaveKey()
LONG RegSaveKey(
HKEY hKey, // 要保存的句柄
LPCTSTR lpFile,// 保存子键的文件
LPSECURITY_ATTRIBUTES lpSecurityAttributes //不太懂
);
返回值:不成功返回非0,成功返回ERROR_SUCCESS
解释:保存键及其子键信息到指定的文件。

14· RegConnectRegistry()
原形:LONG RegConnectRegistry(
LPTSTR lpMachineName, //远程计算机的名称
HKEY hKey,// 预先注册的句柄
PHKEY phkResult // 远程计算机上的句柄
);
返回值:不成功返回非0,成功返回ERROR_SUCCESS
解释:连接到远程系统的注册表。

15·RegNotifyChangeKeyValue()
当修改指定的注册表对象时提供通知。

16· RegUnloadKey()
LONG RegUnLoadKey(
HKEY hKey, // handle to open key
LPCTSTR lpSubKey // address of name of subkey to unload
);
返回值:不成功返回非0,成功返回ERROR_SUCCESS
删除注册表键及其所有的子键。
分享到:
评论

相关推荐

    注册表API函数

    根据提供的文件信息,我们可以归纳出以下关于注册表API函数的相关知识点: ### 1. RegCloseKey() **原形:** ```c++ LONG RegCloseKey( HKEY hKey // 已打开的键句柄 ); ``` **返回值:** 成功则返回0,或ERROR_...

    注册表API函数.doc

    ### 注册表API函数概述 本文将详细介绍与注册表相关的API函数,这些函数主要用于操作系统中的注册表管理。注册表作为Windows系统中一个重要的组件,存储了大量的配置信息,包括硬件、软件以及用户设置等。因此,...

    Windows CE下对注册表操作的API函数说明

    Windows CE的注册表API函数提供了对注册表的全面控制,让开发者可以根据需要定制系统行为或应用设置。了解并熟练使用这些函数,对于开发高效且稳定的Windows CE应用程序至关重要。然而,需要注意的是,不当的注册表...

    VC注册表API应用

    首先,我们需要了解几个主要的注册表API函数: 1. **RegCreateKeyEx**: 这个函数用于创建一个新的注册表项。例如,如果你想在`HKEY_CURRENT_USER\Software`下创建一个名为"MyApp"的键,可以使用此函数。参数包括要...

    Windows CE下对注册表操作的API函数

    Windows CE下对注册表操作的API函数 介绍了Windows CE下对注册表操作的API函数的使用-introduced the Windows CE operating under the registry of the use of API function

    用API函数对注册表进行操作(8KB)...

    标题中的“用API函数对注册表进行操作”指的是在编程中使用操作系统提供的API(应用程序接口)来读写或管理Windows注册表。注册表是Windows系统存储配置信息的关键数据库,包括软件设置、硬件设备信息等。API函数...

    win32 API函数注册表监控C#

    总结起来,“win32 API函数注册表监控C#”这个项目涉及了C#与Win32 API的结合使用,以及如何在C#环境中实现对Windows注册表的实时监控。通过学习和理解这些知识点,开发者可以创建出能够跟踪系统变化的高效工具,这...

    注册表编程.相关函数详解

    二、API函数详解 1. RegOpenKeyEx:该函数用于打开或创建指定的注册表键。需要提供HKEY类型的根键、要打开的键路径、访问权限和句柄指针。返回值表示操作是否成功。 2. RegCreateKeyEx:当需要创建新的注册表键时,...

    Windows API函数在Visual Basic中的应用实例 近百个程序

    通过这些API函数,开发者可以实现更多高级功能,比如控制鼠标和键盘、获取系统信息、操作注册表、网络通信等。这些实例程序提供了很好的学习资源,可以帮助开发者快速掌握API函数的使用方法和应用场景。 此外,使用...

    windows注册表操作API详解

    【Windows注册表操作API详解】 注册表是Windows操作系统中存储系统和应用程序配置信息的核心数据库,它包含关于硬件、软件、...对于不熟悉注册表API的开发者,建议查阅微软的官方文档,以确保正确理解和使用这些函数。

    C# 操作注册表 API

    Api接口,调用相关的入口函数,获取相应的注册表中的要查询的结果

    注册表API,针对C++、C语言操作

    这些API函数使得C++和C语言程序员能够方便地访问和操作注册表,从而实现对程序设置的管理和维护。 键管理类的API主要负责创建、打开、删除和管理注册表键: 1. `RegCloseKey()`:这个函数用于关闭之前打开的注册表...

    《VB API函数大全》

    7. **注册表操作**:API函数如`RegCreateKeyEx`、`RegSetValueEx`和`RegQueryValueEx`使得VB程序可以直接读写Windows注册表,实现配置存储和程序设置。 8. **错误处理**:`GetLastError`函数可以获取最近一次系统...

    vb api 函数大全

    7. **系统控制**:API函数可以用来实现VB标准库无法实现的功能,如控制鼠标、键盘、读写注册表、系统时间等。 8. **多线程编程**:VB支持通过API函数进行多线程编程,如`CreateThread`用于创建新的线程,`...

    VB-API.rar_vb api_vb api函数手册_vb中 api函数参考

    VB-API.rar_vb api_vb api函数手册_vb中 api函数参考 VB(Visual Basic)是一种流行的编程语言,尤其在Windows环境下,它以其易学易用的特性深受开发者喜爱。VB API是VB(Visual Basic 6及更早版本)与Windows操作...

    Powerbuilder API函数大全

    PowerBuilder API函数大全是针对PowerBuilder开发环境的一份详尽的参考资源,它包含了PowerBuilder应用程序在编程过程中可能用到的各种API函数。API(Application Programming Interface)函数是操作系统或者库提供...

    VB API函数大全

    “免费音乐,MTV,电影.url”这个文件名看起来与VB API函数大全的主题不太相关,可能是误放或者是一份附加资源,提供娱乐内容的链接,但主要关注点应放在VB API的学习和应用上。 学习和掌握VB API函数,开发者可以...

    vc++ api函数(Windows API大全)下载

    《VC++ API函数(Windows API大全)》是一本专注于探讨如何在VC++环境中利用Windows API进行程序开发的书籍。Windows API是微软操作系统提供的一系列函数接口,开发者可以通过这些接口实现与操作系统底层的交互,完成...

    API函数大全 API帮助文档

    API函数大全,API帮助文档是IT开发者们的重要参考资料,尤其是对于使用Windows操作系统平台的程序员而言。Windows API(Application Programming Interface)是一系列预先定义的函数、常量、数据结构和消息,它们...

    WindowsAPI函数参考手册【高清】带书签.rar

    《Windows API函数参考手册》是一本对于Windows操作系统编程至关重要的资源,它详尽地涵盖了大量用于构建Windows应用程序的系统调用。这本书以高清格式呈现,带有书签,方便开发者快速定位所需信息,对于进行Windows...

Global site tag (gtag.js) - Google Analytics