有关注册表 API 函数
责任编辑:admin 更新日期:2005-8-6
注册表的操作,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;
}
评论0