Managing information in the Windows registry

Functions for accessing the Registry

PowerBuilder provides several functions you can use to manage application settings in the Windows registry.

Table 33-2: PowerBuilder registry setting functions

Function

Description

RegistryDelete

Deletes a key or a value in a key in the Windows registry.

RegistryGet

Gets a value from the Windows registry.

RegistryKeys

Obtains a list of the keys that are child items (subkeys) one level below a key in the Windows registry.

RegistrySet

Sets the value for a key and value name in the Windows registry. If the key or value name does not exist, RegistrySet creates a new key or value name.

RegistryValues

Obtains a list of named values associated with a key.

For the complete information for these functions, see the PowerScript Reference.

Overriding initialization files

You can use the ProfileString functions to obtain information from the registry instead of from an initialization file. Create a new key called INIFILEMAPPING at the following location:

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion

To override the WIN.INI file, create a subkey in INIFILEMAPPING called WIN.INI with the following value:

                 #usr:software\microsoft\windows\currentversion\extensions

The examples that follow use the registry to keep track of database connection parameters. The connection parameters are maintained in the registry in the MyCo\MyApp\database branch under HKEY_CURRENT_USER\Software.

Reading values from the registry

The following script retrieves values for the default Transaction object from the registry.

RegistryGet("HKEY_CURRENT_USER\Software\MyCo\MyApp\database", &
   "dbms", sqlca.DBMS)
RegistryGet("HKEY_CURRENT_USER\Software\MyCo\MyApp\database", &
    "database", sqlca.database)
RegistryGet("HKEY_CURRENT_USER\Software\MyCo\MyApp\database", &
    "userid", sqlca.userid)
RegistryGet("HKEY_CURRENT_USER\Software\MyCo\MyApp\database", &
    "dbpass", sqlca.dbpass)
RegistryGet("HKEY_CURRENT_USER\Software\MyCo\MyApp\database", &
    "logid", sqlca.logid)
RegistryGet("HKEY_CURRENT_USER\Software\MyCo\MyApp\database", &
    "logpass", sqlca.logpass)
RegistryGet("HKEY_CURRENT_USER\Software\MyCo\MyApp\database", &
    “servername", sqlca.servername)
RegistryGet("HKEY_CURRENT_USER\Software\MyCo\MyApp\database", &
    "dbparm", sqlca.dbparm)

Setting values in the registry

The following script stores the values for the Transaction object in the registry:

RegistrySet("HKEY_CURRENT_USER\Software\MyCo\MyApp\database", &
    "dbms", sqlca.DBMS)
RegistrySet("HKEY_CURRENT_USER\Software\MyCo\MyApp\database", &
    "database", sqlca.database)
RegistrySet("HKEY_CURRENT_USER\Software\MyCo\MyApp\database", &
    "userid", sqlca.userid)
RegistrySet("HKEY_CURRENT_USER\Software\MyCo\MyApp\database", &
    "dbpass", sqlca.dbpass)
RegistrySet("HKEY_CURRENT_USER\Software\MyCo\MyApp\database", &
    "logid", sqlca.logid)
RegistrySet("HKEY_CURRENT_USER\Software\MyCo\MyApp\database", &
    "logpass", sqlca.logpass)
RegistrySet("HKEY_CURRENT_USER\Software\MyCo\MyApp\database", &
    "servername", sqlca.servername)
RegistrySet("HKEY_CURRENT_USER\Software\MyCo\MyApp\database", &
    "dbparm", sqlca.dbparm)