VC++ 中對註冊表的操作

來源:互聯網
上載者:User

VC++ 中對註冊表的操作

作者: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("SOFTWARE//MyProgram");

 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;
      }
  }

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.