Sets the data and type of a specified value under a registry key.

WriteRegistryKey(nRegKey, vValue [, cValueName [, cKeyName [, nValueType]]])

Parameters

nRegKey

Either a registry handle returned from OpenRegistryKey or one of the following key constants.

ConstantDescription
HKEY_CLASSES_ROOTRegistry entries subordinate to this key define types (or classes) of documents and the properties associated with those types. Shell and COM applications use the information stored under this key.

This key also provides backward compatibility with the Windows 3.1 registration database by storing information for DDE and OLE support. File viewers and user interface extensions store their OLE class identifiers in HKEY_CLASSES_ROOT, and in-process servers are registered in this key.

This handle should not be used in a service or an application that impersonates different users.
HKEY_CURRENT_CONFIGContains information about the current hardware profile of the local computer system. The information under HKEY_CURRENT_CONFIG describes only the differences between the current hardware configuration and the standard configuration. Information about the standard hardware configuration is stored under the Software and System keys of HKEY_LOCAL_MACHINE.

HKEY_CURRENT_CONFIG is an alias for HKEY_LOCAL_MACHINE\System\CurrentControlSet\Hardware Profiles\Current.
HKEY_CURRENT_USERRegistry entries subordinate to this key define the preferences of the current user. These preferences include the settings of environment variables, data about program groups, colors, printers, network connections, and application preferences. This key makes it easier to establish the current user's settings; the key maps to the current user's branch in HKEY_USERS. In HKEY_CURRENT_USER, software vendors store the current user-specific preferences to be used within their applications. Microsoft, for example, creates the HKEY_CURRENT_USER\Software\Microsoft key for its applications to use, with each application creating its own subkey under the Microsoft key.

The mapping between HKEY_CURRENT_USER and HKEY_USERS is per process and is established the first time the process references HKEY_CURRENT_USER. The mapping is based on the security context of the first thread to reference HKEY_CURRENT_USER. If this security context does not have a registry hive loaded in HKEY_USERS, the mapping is established with HKEY_USERS\.Default. After this mapping is established it persists, even if the security context of the thread changes.

All registry entries in HKEY_CURRENT_USER except those under HKEY_CURRENT_USER\Software\Classes are included in the per-user registry portion of a roaming user profile. To exclude other entries from a roaming user profile, store them in HKEY_CURRENT_USER_LOCAL_SETTINGS.

This handle should not be used in a service or an application that impersonates different users. Instead, call the RegOpenCurrentUser function.
HKEY_CURRENT_USER_LOCAL_SETTINGSRegistry entries subordinate to this key define preferences of the current user that are local to the machine. These entries are not included in the per-user registry portion of a roaming user profile.

Windows Server 2008, Windows Vista, Windows Server 2003, and Windows XP/2000: This key is supported starting with Windows 7 and Windows Server 2008 R2.
HKEY_LOCAL_MACHINERegistry entries subordinate to this key define the physical state of the computer, including data about the bus type, system memory, and installed hardware and software. It contains subkeys that hold current configuration data, including Plug and Play information (the Enum branch, which includes a complete list of all hardware that has ever been on the system), network logon preferences, network security information, software-related information (such as server names and the location of the server), and other system information.
HKEY_PERFORMANCE_DATARegistry entries subordinate to this key allow you to access performance data. The data is not actually stored in the registry; the registry functions cause the system to collect the data from its source.
HKEY_PERFORMANCE_NLSTEXTRegistry entries subordinate to this key reference the text strings that describe counters in the local language of the area in which the computer system is running. These entries are not available to Regedit.exe and Regedt32.exe.

Windows 2000: This key is not supported.
HKEY_PERFORMANCE_TEXT
Registry entries subordinate to this key reference the text strings that describe counters in US English. These entries are not available to Regedit.exe and Regedt32.exe.

Windows 2000: This key is not supported.
HKEY_USERSRegistry entries subordinate to this key define the default user configuration for new users on the local computer and the user configuration for the current user.
vValue:

The value to write into the registry.
Can be of any type except NULL.

cValueName (optional)

The valuename under which the value should be stored.
If you omit cValueName or pass an empty string the value is stored into the default value of the specified key.

cKeyName (optional)

Path to the subkey of the key passed in nRegKey.

e.g.

&& write to HKEY_LOCAL_MACHINE\SOFTWARE\YourFirm\YourApp\Settings
WriteRegistryKey(HKEY_LOCAL_MACHINE, 'SomeOption', 'NameOfOption', 'SOFTWARE\YourFirm\YourApp\Settings')
nValueType (optional)

The datatype of the registry value.

If you omit the datatype it is determined by the type of the vValue parameter.
The following table shows the default mapping of VFP to registry types.

FoxPro typeRegistry type
CREG_SZ
C binary **REG_BINARY
IREG_INTEGER ***
NREG_DOUBLE ***
DREG_DATE ***
TREG_DATETIME ***
LREG_LOGICAL ***
YREG_MONEY ***

Note

** From a C NOCPTRANS, M NOCPTRANS, Q or W field or from an expression created with CREATEBINARY( ).

Note

*** These types are custom defined. If you always omit the nValueType parameter when calling ReadRegistryKey and WriteRegistryKey,
you will always get back the exact VFP value.


If you specify a type yourself, these types are valid for the given FoxPro datatype.

FoxPro typeRegistry type
C, QAll
IREG_DWORD, REG_QWORD, REG_DOUBLE, REG_INTEGER, REG_BINARY
NREG_DWORD, REG_QWORD, REG_DOUBLE, REG_INTEGER, REG_BINARY
DREG_DATE, REG_DOUBLE, REG_BINARY
TREG_DATETIME, REG_DOUBLE, REG_BINARY
LREG_LOGICAL, REG_DWORD, REG_INTEGER, REG_BINARY
YREG_MONEY, REG_QWORD, REG_BINARY

Return Value

Always .T.

See Also

Reference

ARegistryKeys
ARegistryValues
CancelRegistryChange
CloseRegistryKey
CreateRegistryKey
DeleteRegistryKey
FindRegistryChange
OpenRegistryKey
ReadRegistryKey
RegistryHiveToObject
RegistryValuesToObject

Used WinApi functions

RegSetValueEx
RegOpenKeyEx
RegCloseKey