Searching progress.ini and the Registry at startup
At startup, OpenEdge searches for a Registry location, a progress.ini file, or both. The particular search path depends upon the parameters you specify with the prowin32 command, particularly the Registry Base Key (-basekey) and Initialization File (-ininame) parameters. You can use these parameters to create a more efficient search at startup.
Note: The -basekey and -ininame parameters can only be used on the command line. You cannot use them within a parameter file.
The following illustrates the path that OpenEdge follows when searching for environment information in Windows.
Figure 2. Windows environment information search path
Note: OpenEdge searches for environment information in the HKEY_CURRENT_USER\SOFTWARE\PSC\PROGRESS\x64\<version> location if you have installed 64-bit OpenEdge.
When OpenEdge does not find environment information in the Registry, or when it was started with the -basekey INI startup parameter, it searches through directories for a progress.ini file in the following order:
1. The current working directory (as defined in the Working Directory field in the Program Item properties sheet for Windows)
2. The WINDOWS directory
3. The directory that contains the OpenEdge executable
4. The user's PROPATH
This search order fosters deployment flexibility because you can:
Create a customized progress.ini file
Place the file in a consistent place on every machine
Allow all users to share the same file on a network
After OpenEdge locates the environment information, OpenEdge reads the values for DLC, PROMSGS, and other environment variables. For each variable, OpenEdge first searches the location where it found the environment information. If OpenEdge does not find the variable, it searches for an operating system environment variable.
OpenEdge expects to find all environment settings in the same location it finds the environment variables. There is one exception: OpenEdge searches HKEY_CURRENT_USER and HKEY_LOCAL_MACHINE first when it starts without the -basekey parameter and finds the environment information in the Registry. If OpenEdge writes a value to the Registry, however, it will always write it to HKEY_CURRENT_USER. This allows multiple users of a single machine to customize settings individually. The environment setting location could be either a Registry key or an initialization file, but not both.
The ABL GET-KEY-VALUE statement also searches for user environment information. The GET-KEY-VALUE statement searches either the Registry or a progress.ini file, but not both. When GET-KEY-VALUE searches the Registry, it searches both of the HKEY_CURRENT_USER and HKEY_LOCAL_MACHINE keys if the following conditions are true:
The OpenEdge startup command (prowin32) used for the current session did not include the -basekey parameter.
OpenEdge found the environment information in the Registry at startup or at the last LOAD statement.
The ABL PUT-KEY-VALUE statement writes to the location where the environment information was found at startup. If that location is the Registry, and if the prowin32 command did not include the -basekey parameter at startup, the PUT-KEY-VALUE statement writes to the HKEY_CURRENT_USER key and not to the HKEY_LOCAL_MACHINE key.