Tutorial :Simplest way to read registry key value to std::string?



Question:

What's the simplest way to read a registry key value to std::String?

Say I've got :

HKEY_LOCAL_MACHINE / SOFTWARE / MyApp / value1 = "some text"  HKEY_LOCAL_MACHINE / SOFTWARE / MyApp / value2 = "some more text"  

How do I get those values to std::string in a fast way ?


Solution:1

I have some very old code, but it should give you a good idea:

/**  * @param location The location of the registry key. For example "Software\\Bethesda Softworks\\Morrowind"  * @param name the name of the registry key, for example "Installed Path"  * @return the value of the key or an empty string if an error occured.  */  std::string getRegKey(const std::string& location, const std::string& name){      HKEY key;      TCHAR value[1024];       DWORD bufLen = 1024*sizeof(TCHAR);      long ret;      ret = RegOpenKeyExA(HKEY_LOCAL_MACHINE, location.c_str(), 0, KEY_QUERY_VALUE, &key);      if( ret != ERROR_SUCCESS ){          return std::string();      }      ret = RegQueryValueExA(key, name.c_str(), 0, 0, (LPBYTE) value, &bufLen);      RegCloseKey(key);      if ( (ret != ERROR_SUCCESS) || (bufLen > 1024*sizeof(TCHAR)) ){          return std::string();      }      std::string stringValue = std::string(value, (size_t)bufLen - 1);      size_t i = stringValue.length();      while( i > 0 && stringValue[i-1] == '\0' ){          --i;      }      return stringValue.substr(0,i);   }  

Note:If u also have question or solution just comment us below or mail us on toontricks1994@gmail.com
Previous
Next Post »