Read/Write windows registry [SOLVED]



  • On 26/05/2016 at 07:45, xxxxxxxx wrote:

    User Information:
    Cinema 4D Version:   17 
    Platform:   Windows  ;   
    Language(s) :     C++  ;

    ---------
    Hi, is there anything already available in the SDK, that allows one to read/write windows registry values?
    If not, is there a preferred way of doing so?



  • On 26/05/2016 at 09:30, xxxxxxxx wrote:

    I don' think there's anything for this in the SDK.
    The typical C++ code for this is:
    RegOpenKeyEx(), RegGetValue(), RegSetKeyValue(), and don't forget to RegCloseKey()

    But please don't do this in plugins for sale!!!!😠😠😠
    I need to format my HD at least 4 times a year because of people dumping tons of garbage in my registry.😠😠😠

    Create a folder in your plugin's folder structure to hold any persistent data. So it get's deleted automatically if the user deletes your plugin.
    Please...Don't do it.

    -ScottA



  • On 26/05/2016 at 10:16, xxxxxxxx wrote:

    In the SDK, you have:

    ReadRegInfo() and WriteRegInfo()
    SetWorldContainer() and GetWorldContainer()

    These might be more useful alternatives to using the Windows registry.



  • On 26/05/2016 at 11:25, xxxxxxxx wrote:

    Originally posted by xxxxxxxx

    I don' think there's anything for this in the SDK.The typical C++ code for this is: RegOpenKeyEx(), RegGetValue(), RegSetKeyValue(), and don't forget to RegCloseKey()But please don't do this in plugins for sale!!!!😠😠😠I need to format my HD at least 4 times a year because of people dumping tons of garbage in my registry.😠😠😠Create a folder in your plugin's folder structure to hold any persistent data. So it get's deleted automatically if the user deletes your plugin.Please...Don't do it.-ScottA

    Don't worry, it's not used for my plugins! I strongly stick to Maxons guidelines.

    It's need to detect an external aplication and optionally set its parameters. ;)

    If you're interested, here's the first prototype I came up with:

      
    inline std::string QueryRegistryValue(HKEY hKey, const LPCWSTR subKey, const char* keyName)   
    {   
         HKEY hKeyResult;   
         WCHAR buffer[512];   
         DWORD buffer_size = SIZEOF(buffer);   
      
         if (RegOpenKeyExW(hKey, reinterpret_cast<LPCWSTR>(subKey), 0, KEY_READ, &hKeyResult;) == ERROR_SUCCESS)   
         {   
              if (RegQueryValueExA(hKeyResult, keyName, nullptr, nullptr, reinterpret_cast<LPBYTE>(buffer), &buffer;_size) == ERROR_SUCCESS)   
              {   
                   RegCloseKey(hKeyResult);   
                   return std::string(reinterpret_cast<char*>(buffer));   
              }   
              RegCloseKey(hKeyResult);   
         }   
      
         return std::string();   
    }   
      
    

Log in to reply