| **Navigation:**  [[introduction.htm|Language Reference]] > 13 - Built-in Functions >====== PUTREG (write value to Windows registry) ====== | [[putini set ini file entry .htm|{{btn_prev_n.gif|Previous page}}]][[introduction.htm|{{btn_home_n.gif|Return to chapter overview}}]][[quotereplacestring special characters .htm|{{btn_next_n.gif|Next page}}]] | | || **PUTREG(**//root//, //keyname//, //valuename// [,//value//] [,//valuetype//]** )** {{blk2blue.jpg|blk2blue.jpg}} | **PUTREG** | Writes a string value into the system registry. | | //root// | A LONG integer constant, variable or expression that specifies the root section of the registry to which to write the value. Valid values for this are defined in **equates.clw** and are as follows: | | | **REG_CLASSES_ROOT** | | | **REG_CURRENT_USER** | | | **REG_LOCAL_MACHINE** | | | **REG_USERS** | | | **REG_PERFORMANCE_DATA** | | | **REG_CURRENT_CONFIG** | | | **REG_DYN_DATA** | | //keyname// | A STRING constant, variable or expression that contains the key name of the key whose value is to be written. This may contain a path separated by backslash '\' characters. The //keyname// cannot contain a leading backslash. | | //valuename// | A STRING constant, variable or expression that contains the name of the value to be written. | | //value// | A STRING constant, variable or expression that contains the value to be written to the registry in the position given. If omitted, an empty string is written to the registry. | | //valuetype// | A LONG integer constant, variable or expression that specifies the how to store passed value. If omitted, the default value is REG_SZ (see below). | | | Supported types (expressed as EQUATES): | | **REG_NONE** | value is ignored | | **REG_SZ** | value is stored as a null terminated UNICODE string (default) | | **REG_EXPAND_SZ** | value is stored as a null terminated UNICODE string that can contain unexpanded environment variables. | | **REG_MULTI_SZ** | value is stored as an array of null terminated UNICODE strings. Strings in the array (i.e. in value parameter) are separated with '<;0>' characters. GETREG appends 2 '<;0>' characters at the end of array if they are not given. | | **REG_DWORD** | value is stored as a 32 bit number, lower bytes stored first, e.g. value equal to 12345678h is stored as '<;78h,56h,34h,12h>' | | **REG_DWORD_LITTLE_ENDIAN** | the same as REG_DWORD | | **REG_DWORD_BIG_ENDIAN** | value is stored as a 32 bit number with backward order of bytes, e.g. value equal to 12345678h is stored as '<;12h,34h,56h,78h>' | | **REG_QWORD** | value is a 64 bit number, lower bytes are stored first | | **REG_QWORD_LITTLE_ENDIAN** | the same as REG_QWORD | | **REG_BINARY** | value string is a binary data of any form | The PUTREG procedure places the value into a valuename that exists in the Windows registry. The key and value will be created if it does not exist. If the write to the registry is successful, PUTREG returns 0. If the write to the registry is unsuccessful, the result is a non-zero value. **Vista and Clarion Built-in Registry Functions** On Vista, a (non-elevated) app can READ the registry key HKLM (local machine) with no problems, but as far as writing to the Registry it needs to use HKCU (current user). If you code sign your executable and run with elevated priveleges then you can write to HKLM **Return Data Type:**     LONG **Example:** **  PROGRAM** **  MAP.** **  INCLUDE('EQUATES')** **CurrentPath CSTRING(100)** **ColorScheme CSTRING(100)** **    CODE** **    !Set the root directory of Clarion 6 install** **    CurrentPath = 'C:\Clarion7'** **    IF ****PUTREG****(REG_LOCAL_MACHINE,'SOFTWARE\SoftVelocity\Clarion7','root',CurrentPath)** **     MESSAGE('Unable to set the root directory') !post error if non-zero value returned** **    END** **    !writes the current user's color scheme to the registry** **    ColorScheme = 'Windows Standard'** **    IF ****PUTREG****(REG_CURRENT_USER,'Control Panel\Current','Color Schemes',ColorScheme)** **     MESSAGE('Unable to set the color scheme')   !post error if non-zero value returned** **    END** **See Also:** [[getreg get windows registry entry .htm|GETREG]], [[deletereg remove a value or key from windows registry .htm|DELETEREG]]