RegOpenKeyEx    
The RegOpenKeyEx
function opens the specified key. 
LONG RegOpenKeyEx(
|     HKEY hKey, | // handle of open
  key  | 
|     LPCTSTR lpSubKey, | // address of name
  of subkey to open  | 
|     DWORD ulOptions, | // reserved  | 
|     REGSAM samDesired, | // security access
  mask  | 
|     PHKEY phkResult  | // address of
  handle of open key  | 
|    ); |  | 
Parameters
hKey
Identifies a
currently open key or any of the following predefined reserved handle values: 
HKEY_CLASSES_ROOT
HKEY_CURRENT_USER
HKEY_LOCAL_MACHINE
HKEY_USERS
lpSubKey
Points to a
null-terminated string containing the name of the subkey to open. If this parameter
is NULL or a pointer to an empty string, the function will open a new handle of
the key identified by the hKey parameter. In this case, the function
will not close the handles previously opened. 
ulOptions
Reserved;
must be zero. 
samDesired
Specifies an
access mask that describes the desired security access for the new key. This
parameter can be a combination of the following values: 
| Value | Meaning | 
| KEY_ALL_ACCESS | Combination
  of KEY_QUERY_VALUE, KEY_ENUMERATE_SUB_KEYS, KEY_NOTIFY, KEY_CREATE_SUB_KEY,
  KEY_CREATE_LINK, and KEY_SET_VALUE access. | 
| KEY_CREATE_LINK | Permission
  to create a symbolic link. | 
| KEY_CREATE_SUB_KEY | Permission
  to create subkeys. | 
| KEY_ENUMERATE_SUB_KEYS | Permission
  to enumerate subkeys. | 
| KEY_EXECUTE | Permission
  for read access. | 
| KEY_NOTIFY | Permission
  for change notification. | 
| KEY_QUERY_VALUE | Permission
  to query subkey data. | 
| KEY_READ | Combination
  of KEY_QUERY_VALUE, KEY_ENUMERATE_SUB_KEYS, and KEY_NOTIFY access. | 
| KEY_SET_VALUE | Permission
  to set subkey data. | 
| KEY_WRITE | Combination
  of KEY_SET_VALUE and KEY_CREATE_SUB_KEY access. | 
phkResult
Points to a
variable that receives the handle of the opened key. 
Return Values
If the
function succeeds, the return value is ERROR_SUCCESS.
If the
function fails, the return value is a nonzero error code defined in WINERROR.H.
You can use the FormatMessage
function with the FORMAT_MESSAGE_FROM_SYSTEM flag to get a generic description
of the error.
Remarks
Unlike the RegCreateKeyEx
function, the RegOpenKeyEx function does not create the specified key if
the key does not exist in the registry. 
See Also