程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> VC >> vc教程 >> VC++ 中對注冊表的操作

VC++ 中對注冊表的操作

編輯:vc教程

這裡只是對注冊表的幾個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;
      }
  }

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved