今天图老师小编给大家介绍下VC++ 中对注册表的操作,平时喜欢VC++ 中对注册表的操作的朋友赶紧收藏起来吧!记得点赞哦~
【 tulaoshi.com - 编程语言 】
VC++ 中对注册表的操作
(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)作者:lixiaosan
日期:04/29/2006
这里只是对注册表的几个api函数的使用简介。在MFC中,你可以使用CRegKey类操作注册表,关于CRegKey类在这里就不做介绍了,可以参考msdn。
以下代码实现了在HKEY_LOCAL_MACHINE的SOFTWARE下打开MyProgram键,如果MyProgram不存在,则创建之,存在则进行查询
 HKEY hKEY;
 HKEY hKEYResult;
 LPCTSTR lpszSubKey;
 LPCTSTR lpszValueName;
 LONG ret;
 DWORD dwType;
 DWORD dwSize;
 
 hKEY = HKEY_LOCAL_MACHINE;
 lpszSubKey = _T("SOFTWAREMyProgram"); 
 ret = RegOpenKeyEx(
               hKEY,                                      // 根键
               lpszSubKey,                           // 子键
               0,                                             // 必须为0
               KEY_ALL_ACCESS,            // 访问权限
               &hKEYResult);                     // 保存打开的键的句柄
            
 if (ret != ERROR_SUCCESS)       // 若打开失败,则进行创建
 {
     ret = RegCreateKeyEx(
                   hKEY,                                                   // 根键
                   lpszSubKey,                                       // 子键
                   0,                                                          // 必须为0
                   NULL,                                                  // 键的class
                   REG_OPTION_NON_VOLATILE,  // 永久保持
                   KEY_READ|KEY_WRITE,               // 访问权限
                   NULL,                                                 // 安全属性
                   &hKEYResult,                                   // 保存打开的键的句柄
                   NULL); 
    if (ret != ERROR_SUCCESS)
    {
        MessageBox(_T("Create failed!"));
        RegCloseKey(hKEYResult);        // 使用完记得关闭句柄
        return;
      }
      else
      {
          lpszValueName = _T("Number");
          DWORD dwNumber = 10;  
          ret = RegSetValueEx(
                        hKEYResult,                                // 打开的句柄
                        lpszValueName,                         // 键名
                        0,                                                   // 必须为0
                        REG_DWORD,                           // 键类型
                        (CONST BYTE*)&dwNumber, // 需存储的数据
                        sizeof(DWORD));                       // 数据长度
          lpszValueName = _T("Date");
          LPCTSTR lpszDate = _T("2006/4/29");
          ret = RegSetValueEx(
                        hKEYResult,
                        lpszValueName,
                        0,
                        REG_SZ,
                        (CONST BYTE*)lpszDate,
                        MAX_PATH);
                        RegCloseKey(hKEYResult);
      }
  }
  else // 如打开成功,则进行查询
  {
      lpszValueName = _T("Number");
      dwType = REG_DWORD;
      DWORD dwRes = 0;
      dwSize = sizeof(DWORD);
      ret = RegQueryValueEx(
                    hKEYResult,               // 打开的句柄
                    lpszValueName,        // 查找的键名
                    0,                                  // 必须为0
                    &dwType,                    // 键类型
                    (BYTE*)&dwRes,      // 返回的数据
                    &dwSize);                   // 数据长度
      if (ret != ERROR_SUCCESS)
      {
          MessageBox(_T("Create failed!"));
          RegCloseKey(hKEYResult);
          return;
      }
      
      lpszValueName = _T("Date");
      dwType = REG_SZ;
      dwSize = MAX_PATH;
      BYTE *pByteSubKey = new BYTE[MAX_PATH]; 
      ZeroMemory(pByteSubKey, MAX_PATH);
      ret = RegQueryValueEx(
                    hKEYResult,
                    lpszValueName,
                    0,
                    &dwType,
                    pByteSubKey,
                    &dwSize);
      RegCloseKey(hKEYResult);
      delete []pByteSubKey;
      pByteSubKey = NULL;
      if (ret != ERROR_SUCCESS)
      {
          MessageBox(_T("Create failed!"));
          RegCloseKey(hKEYResult);
          return;
      }
  }
来源:http://www.tulaoshi.com/n/20160219/1622988.html
看过《VC++ 中对注册表的操作》的人还看了以下文章 更多>>