arp绑定注册表:ARP函数实现注册表的读取,写入,删除



注册表操作API为我们提供了大约25个他提供了对注册表读取写入删除以及打开注册表及键值时所有并且可以达到对注册表备份连接和对远端注册表进行查看等等注册表对整个系统十分重要你在进行操作时定要先考虑清楚这些有:
RegCloseKeyRegConnectRegistryRegCreateKeyRegCreateKeyExRegDeleteKeyRegDeleteVale
RegEnumKeyRegFlushKeyRegGetKeySecurity(此98不适用)RegLoadKey
RegNotyChangeKeyValue(98不适用)RegOpenKeyRegOpenKeyExRegQueryInfoKeyRegQueryValue
RegQueryValueExRegReplaceKeyRegRestoreKey(98不适用)RegSaveKeyRegSetKeySecurity(98不适用)RegSetValueRegSetValueExRegUnLoadKey
我们对经常使用几个进行介绍
1·RegClose
原形:LONGRegCloseKey(
HKEYhKey//释放已经打开注册表句柄
);
返回值:不成功返回非0成功返回ERROR_SUCCESS
解释:关闭指定主册表键释放句柄当对个或多个键或值操作完成以后需要关闭其键来进行保存操作结果关闭个键后句柄变为非法以使其不可再次被使用为系统重新使用而释放句柄
例子
BOOLbRet=TRUE;
(m_hKeyNULL)
(FALSE);
bRet=(::RegCloseKey(m_hKey)ERROR_SUCCESS);
m_hKey=NULL;
(bRet);

2·RegCreateKeyEx和RegCreateKey
原形:LONGRegCreateKeyEx(
HKEYhKey,//主键名称
LPCTSTRlpSubKey,//子键名称或路径
DWORDReserved,//保留为0
LPTSTRlpClass,//没弄懂我设为空也差不多
DWORDdwOptions,
/*对你建立些选项可以是这些值:REG_OPTION_NON_VOLATILEREG_OPTION_VOLATILEREG_OPTION_BACKUP_RESTORE第个是默认般用第个就可以了*/
REGSAMsamDesired,//设置你对你建立这个键访问权限 [Page]
LPSECURITY_ATTRIBUTESlpSecurityAttributes,
//不太明白
PHKEYphkResult,//指向你建句柄
LPDWORDlpdwDisposition//用来查看是打开个已经有还是新建了键
);
RegCreateKey简单了不少请自己看了
返回值:不成功返回非0成功返回ERROR_SUCCESS.
解释:打开指定键或子键如果要打开键不存在会试图建立它当在创建或打开注册表键时需要指定访问权限而这些访问权限需要到默认权限是KEY_ALL_ACCESS权限还有KEY_CREATE_LINK创建链权限,KEY_CREATE_SUB_KEY创建子键权限,KEY_EXECUTE读取键权限KEY_NOTIFY获得修改键通知权限KEY_QUERY_VALUE查询键值权限KEY_SET_VALUE设置数据值权限注意不能在根级建键在注册表级仅可有预定义具体使用请查看联机手册
例子:
HKEYm_hkey;
DWORDdwDisposition;
longret0=(::RegCreateKeyEx
(HKEY_CURRENT_USER,\"REGD\\\\\",0,NULL,
REG_OPTION_NON_VOLATILE,KEY_ALL_ACCESS,NULL,&m_hkey,&dwDisposition));
(ret0!=ERROR_SUCCESS)//如果无法打开hKEY则终止执行
{
MessageBox(\":无法打开有关hKEY!\");
;
}
(dwDispositionREG_OPENED_EXISTING_KEY)
MessageBox(\"打开了个已经存在键\");

{
(dwDispositionREG_CREATED_NEW_KEY)
MessageBox(\"建立个新键\");


}
RegClosekey(m_hkey);

3·RegOpenKey和RegOpenKeyEx
原形:LONGRegOpenKeyEx(
HKEYhKey,//要打开主键名
LPCTSTRlpSubKey,//子键或路径
DWORDulOptions,//保留为0 [Page]
REGSAMsamDesired,//操作权限标志
PHKEYphkResult//指向你打开键句柄
);
返回值:不成功返回非0成功返回ERROR_SUCCESS.
解释:该负责打开指定键或子键如果不存在他不建立其他和RegCreateKeyEx和RegCreateKey基本相同

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

5·RegQueryValue和RegQueryValueEx
原形:LONGRegQueryValueEx(
HKEYhKey,//已打开句柄
LPTSTRlpValueName,//要查询值名称传如\"\"为查询键下默认值
LPDWORDlpReserved,//保留为0
LPDWORDlpType,//查询类型
LPBYTElpData,//数据存放地址
LPDWORDlpcbData//数据长度+1
);
返回值:不成功返回非0成功返回ERROR_SUCCESS
解释:读取某子键下特定名称
例子
CStringm_strQ;//用来存放查询来串值
DWORDm_dwCount;//记录长度+1(包括NULL)
::RegQueryValueEx(m_hkey,\"\",0,NULL,NULL,&m_dwCount);//先查询出字节空间
ret1=(::RegQueryValueEx
(m_hkey,\"\",0,NULL,(unsignedchar*)m_strQ.GetBuffer(m_dwCount),&m_kk)); [Page]
m_strQ.ReleaseBuffer;
MessageBox(m_strQ);

6·RegSetValue和RegSetValueEX
原形:LONGRegSetValueEx(
HKEYhKey,//已打开句柄
LPCTSTRlpValueName,//要查询值名称传如\"\"为查询键下默认值
DWORDReserved,//保留
DWORDdwType,//变量类型
CONSTBYTE*lpData,//变量数据地址
DWORDcbData//变量长度
);
返回值:不成功返回非0成功返回ERROR_SUCCESS
解释:设置某子键下特定名称

7·RegEnumValue
原形:LONGRegEnumValue(
HKEYhKey,//要查询已打开句柄
DWORDdwIndex,//读取名称索引号
LPTSTRlpValueName,//返回所读取名称
LPDWORDlpcbValueName,//返回读取名称长度不含chr(0)
LPDWORDlpReserved,//保留为0


LPDWORDlpType,//返回所读取数据类型
LPBYTElpData,//返回所读取数据
LPDWORDlpcbData//返回所读取数据长度
);
返回值:不成功返回非0成功返回ERROR_SUCCESS
解释:列出某Key所有名称变化索引即可遍历整个键下名称和数据

8·RegDeleteValue
原形:LONGRegDeleteValue(
HKEYhKey,//要删除句柄 [Page]
LPCTSTRlpValueName//要删除名称
);
返回值:不成功返回非0成功返回ERROR_SUCCESS
解释:删除某Key名称

9·RegEnumKey和RegEnumKeyEx
原形:LONGRegEnumKeyEx(
HKEYhKey,//要列举句柄
DWORDdwIndex,//索引
LPTSTRlpName,//子键名称
LPDWORDlpcbName,//子键名称长度
LPDWORDlpReserved,//保留
LPTSTRlpClass,//addressofbufferfor
LPDWORDlpcbClass,//addressforbuffer
PFILETIMElpftLastWriteTime
//addressfortimekeylastwrittento
);
返回值:不成功返回非0成功返回ERROR_SUCCESS
返回注册表键及其子键详细信息

10·RegQueryInfoKey
原形:LONGRegQueryInfoKey(
HKEYhKey,//已打开句柄
LPTSTRlpClass,//类型名称仅使用于NT若不使用则传入Null
LPDWORDlpcbClass,//类型名称长度
LPDWORDlpReserved,//保留
LPDWORDlpcSubKeys,//返回子键数目
LPDWORDlpcbMaxSubKeyLen,//返回最长子键长度 [Page]
LPDWORDlpcbMaxClassLen,//返回最长类长度
LPDWORDlpcValues,//返回值数目
LPDWORDlpcbMaxValueNameLen,//返回最长值项名称长度
LPDWORDlpcbMaxValueLen,//返回最长长度
LPDWORDlpcbSecurityDescriptor,//返回安全描述仅适用于NT
PFILETIMElpftLastWriteTime//返回键最后被写入时间仅适用于NT
);
返回值:不成功返回非0成功返回ERROR_SUCCESS
解释:返回注册表键信息包括类名、子键数量、最长子键名、值数量、最长值数据、安全描述符长度以及上次写入时间等

11·RegLoadKey
原形:LONGRegLoadKey(
HKEYhKey,//打开句柄
LPCTSTRlpSubKey,//子键路径
LPCTSTRlpFile//要写入注册表信息文件


);
返回值:不成功返回非0成功返回ERROR_SUCCESS
解释:从指定文件恢复注册表键子键信息到注册表

12·RegReplaceKey
原形:LONGRegReplaceKey(
HKEYhKey,//handletoopenkey
LPCTSTRlpSubKey,//addressofnameofsubkey
LPCTSTRlpNewFile,//在替换前生成新备份文件
LPCTSTRlpOldFile//需要覆盖上注册表文件
);
返回值:不成功返回非0成功返回ERROR_SUCCESS
解释:从指定文件恢复注册表键子键信息到注册表并替换原有并生成新备份文件 [Page]

13·RegSaveKey
LONGRegSaveKey(
HKEYhKey,//要保存句柄
LPCTSTRlpFile,//保存子键文件
LPSECURITY_ATTRIBUTESlpSecurityAttributes//不太懂
);
返回值:不成功返回非0成功返回ERROR_SUCCESS
解释:保存键及其子键信息到指定文件

14·RegConnectRegistry
原形:LONGRegConnectRegistry(
LPTSTRlpMachineName,//远程计算机名称
HKEYhKey,//预先注册句柄
PHKEYphkResult//远程计算机上句柄
);
返回值:不成功返回非0成功返回ERROR_SUCCESS
解释:连接到远程系统注册表

15·RegNotyChangeKeyValue
当修改指定注册表对象时提供通知

16·RegUnloadKey
LONGRegUnLoadKey(
HKEYhKey,//handletoopenkey
LPCTSTRlpSubKey//addressofnameofsubkeytounload
);
返回值:不成功返回非0成功返回ERROR_SUCCESS
删除注册表键及其所有子键
Tags:  注册表不能写入 如何写入注册表 无法写入注册表 arp绑定注册表

延伸阅读

最新评论

发表评论