VC登錄檔寫入和讀取字串
阿新 • • 發佈:2019-01-04
關於登錄檔讀寫的文章網上有很多,但是真的要用到的時候發現很難找到直接向登錄檔讀寫Cstring字串的文章
void CTestDlg::WirteREG(void) { int nIndex=1; Cstring strr1.Format("%i,%i,%i",1,2,3); Cstring strr.Format("CmSet%i",nIndex); HKEY hKey = nullptr; //建立成功,將得到hKey,一個登錄檔控制代碼,用於下面操作登錄檔 if (ERROR_SUCCESS != RegCreateKey(HKEY_CURRENT_USER, TEXT("SoftWare\\Test\\set"), &hKey)) { AfxMessageBox(TEXT("建立登錄檔失敗")); return; } //寫入登錄檔 //型別 //名稱 //字元個數 //只能寫入一個value if (ERROR_SUCCESS != RegSetValue(hKey,nullptr,REG_SZ,TEXT("Test"),4)) { AfxMessageBox(TEXT("寫入登錄檔失敗")); return; } if (hKey ==nullptr) { return; } LONG lRet = 0; LPSTR lpPath = (LPSTR)(LPCTSTR)strr1; //這個函式可以寫入更多的Value //名稱 //強制為零 //型別 //資料 if (ERROR_SUCCESS != (lRet = RegSetValueEx(hKey, TEXT(strr), 0, REG_SZ, (CONST BYTE *)lpPath, strr1.GetLength()))) { AfxMessageBox(TEXT("寫入登錄檔失敗Ex")); return; } AfxMessageBox(TEXT("寫入登錄檔成功!")); RegCloseKey(hKey); }
void CTestDlg::ReadREG(void) { LONG lValue = 0; //先讀取資料的長度 RegQueryValue(HKEY_CURRENT_USER, TEXT("SoftWare\\Test\\set"), nullptr, &lValue); TCHAR *pBuf = new TCHAR[lValue]; RegQueryValue(HKEY_CURRENT_USER, TEXT("SoftWare\\Test\\set"), pBuf, &lValue); AfxMessageBox(pBuf); HKEY hKey = nullptr; DWORD dwTpye = REG_SZ; DWORD dwValue = MAX_PATH;//這個大小一定要先求出來,否則會出錯(234) TCHAR data[MAX_PATH]; LONG lRet = 0; //開啟登錄檔 RegOpenKeyEx(HKEY_CURRENT_USER, TEXT("SoftWare\\CXTest\\set"),0, KEY_ALL_ACCESS,&hKey); //RegOpenKey(HKEY_LOCAL_MACHINE, TEXT("SoftWare\\Test"), &hKey); //讀登錄檔 //valuename //返回value型別 //資料快取區 //快取區大小 if (ERROR_SUCCESS != (lRet = RegQueryValueEx(hKey, TEXT("CmSet1"), 0, &dwTpye, (LPBYTE)data, &dwValue))) { AfxMessageBox(TEXT("讀取登錄檔失敗!")); return; } AfxMessageBox(TEXT("讀取登錄檔成功!")); CString s; s.Format(data); sscanf(s,"%i,%i",&cc,&xx); AfxMessageBox(s); }