long RegistryRW::CreateRegistryValue(const std::string& path,const std::string& valueName,const std::string& value) const { long ret= 0; if (!KeyExist(path,ret)) return ret; HKEY key ; TCHAR valueBuf[MAX_VALUE_NAME] ={0}; strncpy(valueBuf, value.c_str(),value.length()); valueBuf[value.length()]='\0'; ret = RegOpenKeyExA(m_root , path.c_str(),0, KEY_WRITE, &key); if (ret != ERROR_SUCCESS ) { CreateErrorMsg(ret,true); return ret; } if (key!=NULL) { ret = RegSetValueEx(key,valueName.c_str(),0,REG_SZ,(LPBYTE)valueBuf,MAX_VALUE_NAME); } if (ret != ERROR_SUCCESS) { CreateErrorMsg(ret,true); } RegCloseKey(key); return ret; }
long RegistryRW::CreateRegistryKeyLibrary(const std::string& path,const std::string& keyName) const { long ret ; if (!KeyExist(path,ret)) { CreateErrorMsg(ret,true); return ret; } std::string NewKeyPath = (path.size()==0)? keyName : path + "\\" + keyName; if (KeyExist(NewKeyPath,ret)) return -2; HKEY key ; //need to omit ret = OpenRegKey(path,key); if (ret != ERROR_SUCCESS) { CreateErrorMsg(ret,true); return ret; } ret= RegCreateKeyEx(m_root, NewKeyPath.c_str(), 0L, NULL, REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, NULL, &key, NULL ); if (ret != ERROR_SUCCESS ) CreateErrorMsg(ret,false); RegCloseKey(key); return 0; }
std::string RegistryRW::ReadValueFromReg(const std::string& path,const std::string& valueName) const { std::string value; DWORD bufLen = MAX_VALUE_NAME*sizeof(TCHAR); TCHAR valueStr[MAX_VALUE_NAME]; long ret = GetValueFromKey(path,valueName,(LPBYTE)valueStr); if (ret!= ERROR_SUCCESS) return CreateErrorMsg(ret,false); std::string stringValue = std::string(valueStr, (size_t)bufLen - 1); size_t i = stringValue.length(); while( i > 0 && stringValue[i-1] == '\0' ){ --i; } return stringValue.substr(0,i); }
int RegistryRW::Get_numKeyItems(const std::string& path) const { HKEY hkey; DWORD numItems = 0; DWORD biggest; long ret ; ret = OpenRegKey(path,hkey); if (ret != ERROR_SUCCESS) { CreateErrorMsg(ret,true); return -1; //error } GetInfoKey(hkey,numItems,biggest); return numItems; }
void ErrorHandler::CreateErrorMsg(const char *FileName,const wchar *FileNameW) { CreateErrorMsg(NULL,NULL,FileName,FileNameW); }
void ErrorHandler::CreateErrorMsg(const char *FileName) { CreateErrorMsg(NULL,FileName); }
void ErrorHandler::CreateErrorMsg(string sParfileName, const char *FileName) { CreateErrorMsg(sParfileName,NULL,FileName); }