PUTREG (write value to Windows registry)

Top  Previous  Next

 

PUTREG(root, keyname, valuename [,value] [,valuetype] )

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, DELETEREG