【C++】查詢、建立、設定登錄檔鍵值的示例程式碼
阿新 • • 發佈:2019-01-09
示例程式碼將在登錄檔位置:HKEY_CURRENT_USER\Software\ 讀寫鍵值
bool LicenseManage::OpenRegKey(HKEY& hRetKey) { if (ERROR_SUCCESS == RegOpenKey(HKEY_CURRENT_USER,"Software", &hRetKey)) { return true; } return false; } bool LicenseManage::CreateRegKey(string strSubKey, string strValueName, string strValue) { HKEY hKey; HKEY hSubKey; if (OpenRegKey(hKey)) { // 建立鍵 RegCreateKey(hKey,strSubKey.c_str(), &hSubKey); // 設定鍵值 if( ERROR_SUCCESS != RegSetValueEx(hSubKey,strValueName.c_str(),0,REG_SZ,(CONST BYTE *)strValue.c_str(),strValue.size()+1)) { return false; } RegCloseKey(hKey) ; //關閉登錄檔 return true; } return false; } bool LicenseManage::QueryRegKey(string strSubKey, string strValueName, string& strValue) { DWORD dwType= 1;//定義資料型別 DWORD dwLen = MAX_PATH; char data[MAX_PATH]; memset(data,0,sizeof(data)); HKEY hKey; HKEY hSubKey; if (OpenRegKey(hKey)) { string strTempKey = "Software\\"+strSubKey; if (ERROR_SUCCESS == RegOpenKey(HKEY_CURRENT_USER,strTempKey.c_str(), &hSubKey)) { if (ERROR_SUCCESS == RegQueryValueEx(hSubKey,strValueName.c_str(),0,&dwType,(LPBYTE)data,&dwLen)) { strValue = data; RegCloseKey(hKey) ; //關閉登錄檔 return true; } } RegCloseKey(hKey) ; //關閉登錄檔 } return false; } bool LicenseManage::SetRegKey(string strSubKey, string strValueName, string strValue) { HKEY hKey; HKEY hSubKey; if (OpenRegKey(hKey)) { string strTempKey = "Software\\"+strSubKey; if (ERROR_SUCCESS == RegOpenKey(HKEY_CURRENT_USER,strTempKey.c_str(), &hSubKey)) { if (ERROR_SUCCESS == RegSetValueEx(hSubKey,strValueName.c_str(),0,REG_SZ,(LPBYTE)strValue.c_str(),strValue.size())) { RegCloseKey(hKey) ; //關閉登錄檔 return true; } } RegCloseKey(hKey) ; //關閉登錄檔 } return false; }