当前位置导航:炫浪网>>网络学院>>编程开发>>C++教程>>C++进阶与实例

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

    注册表的操作,API为我们提供了大约25个函数。他提供了对注册表的读取,写入,删除,以及打开注册表及键值时所有函数,并且可以达到对注册表的备份,连接和对远端注册表进行查看等等。注册表对整个系统十分重要,你在进行操作时,一定要先考虑清楚。这些函数有: 
RegCloseKey RegConnectRegistry  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,    // 设置你对你建立的这个键的访问权限  [Page]
        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(\"建立一个新键\"); 

共4页 首页 上一页 1 2 3 4 下一页 尾页 跳转到
相关内容
赞助商链接