Kbase P3417: How to write DWORD value in the registry
Autor |
  Progress Software Corporation - Progress |
Acesso |
  Público |
Publicação |
  12/03/2003 |
|
Status: Unverified
GOAL:
How to write DWORD value in the registry
GOAL:
How to call RegCreateKeyExA API
GOAL:
How to call RegSetValueExA API
FIX:
&SCOPED-DEFINE HKEY_CLASSES_ROOT -2147483648
&SCOPED-DEFINE HKEY_CURRENT_USER -2147483647
&SCOPED-DEFINE HKEY_LOCAL_MACHINE -2147483646
&SCOPED-DEFINE HKEY_USERS -2147483645
&SCOPED-DEFINE HKEY_CURRENT_CONFIG -2147483643
&SCOPED-DEFINE HKEY_DYN_DATA -2147483642
&SCOPED-DEFINE KEY_ALL_ACCESS 983103
&SCOPED-DEFINE REG_OPTION_NON_VOLATILE 0
&SCOPED-DEFINE REG_OPTION_VOLATILE 1
&SCOPED-DEFINE REG_CREATED_NEW_KEY 1
&SCOPED-DEFINE REG_OPENED_EXISTING_KEY 2
DEFINE VARIABLE hkey AS INTEGER NO-UNDO.
DEFINE VARIABLE dwDisposition AS INTEGER NO-UNDO.
DEFINE VARIABLE res AS INTEGER NO-UNDO.
DEFINE VARIABLE lpBuffer AS MEMPTR NO-UNDO.
/* Create the key HKEY_CURRENT_USER\Progess\test */
RUN RegCreateKeyExA (
{&HKEY_CURRENT_USER},
"Progress\test",
0,
"",
0,
{&KEY_ALL_ACCESS},
0,
OUTPUT hkey,
OUTPUT dwDisposition,
OUTPUT res).
/* Create the value DWORD = &H1 */
SET-SIZE(lpBuffer) = 4.
PUT-LONG(lpBuffer,1) = 1. /* Set the value to add = &H1 */
RUN RegSetValueExA (hkey,
"Dword",
INPUT 0, /* reserved, must be 0 */
INPUT 4, /* REG_DWORD */
INPUT lpBuffer,
INPUT 4, /* size lpBuffer */
OUTPUT res).
RUN RegCloseKey (hkey, OUTPUT res).
PROCEDURE RegCreateKeyExA EXTERNAL "ADVAPI32.dll" :
DEFINE INPUT PARAMETER hkey AS LONG.
DEFINE INPUT PARAMETER lpszSubKey AS CHAR.
DEFINE INPUT PARAMETER dwReserved AS LONG.
DEFINE INPUT PARAMETER plszClass AS CHAR.
DEFINE INPUT PARAMETER dwOptions AS LONG.
DEFINE INPUT PARAMETER samDesired AS LONG.
DEFINE INPUT PARAMETER lpSecurityAttributes AS LONG.
DEFINE OUTPUT PARAMETER phkResult AS LONG.
DEFINE OUTPUT PARAMETER lpdwDisposition AS LONG.
DEFINE RETURN PARAMETER lpResult AS LONG.
END PROCEDURE.
PROCEDURE RegSetValueExA EXTERNAL "ADVAPI32.dll" :
DEFINE INPUT PARAMETER hkey AS LONG.
DEFINE INPUT PARAMETER lpValueName AS CHAR.
DEFINE INPUT PARAMETER Reserved AS LONG.
DEFINE INPUT PARAMETER dwType AS LONG.
DEFINE INPUT PARAMETER lpBuffer AS MEMPTR.
DEFINE INPUT PARAMETER cbData AS LONG.
DEFINE RETURN PARAMETER lpResult AS LONG.
END PROCEDURE.
PROCEDURE RegCloseKey EXTERNAL "ADVAPI32.dll" :
DEFINE INPUT PARAMETER hkey AS LONG.
DEFINE RETURN PARAMETER lpResult AS LONG.
END PROCEDURE.