Compartir a través de


Función RegOpenKeyExA (winreg.h)

Abre la clave del Registro especificada. Tenga en cuenta que los nombres de clave no distinguen mayúsculas de minúsculas.

Para realizar operaciones de registro de transacciones en una clave, llame a la función regOpenKeyTransacted .

Sintaxis

LSTATUS RegOpenKeyExA(
  [in]           HKEY   hKey,
  [in, optional] LPCSTR lpSubKey,
  [in]           DWORD  ulOptions,
  [in]           REGSAM samDesired,
  [out]          PHKEY  phkResult
);

Parámetros

[in] hKey

Identificador de una clave del Registro abierta. Este identificador lo devuelve la función RegCreateKeyEx o regOpenKeyEx o puede ser una de las siguientes claves predefinidas:

HKEY_CLASSES_ROOTHKEY_CURRENT_CONFIGHKEY_CURRENT_USERHKEY_LOCAL_MACHINEHKEY_USERS

[in, optional] lpSubKey

Nombre de la subclave del Registro que se va a abrir.

Los nombres de clave no distinguen mayúsculas de minúsculas.

Si el parámetro lpSubKey es null o un puntero a una cadena vacía y, si hKey es una clave predefinida, el sistema actualiza la clave predefinida y phkResult recibe el mismo identificador hKey pasado a la función. De lo contrario, phkResult recibe un nuevo identificador de la clave abierta.

Para obtener más información, consulte límites de tamaño de elemento del Registro .

[in] ulOptions

Especifica la opción que se va a aplicar al abrir la clave. Establezca este parámetro en cero o en lo siguiente:

Valor Significado
REG_OPTION_OPEN_LINK
La clave es un vínculo simbólico. Los vínculos simbólicos del Registro solo deben usarse cuando sea absolutamente necesario.

[in] samDesired

Máscara que especifica los derechos de acceso deseados a la clave que se va a abrir. Se produce un error en la función si el descriptor de seguridad de la clave no permite el acceso solicitado para el proceso de llamada. Para obtener más información, consulte Derechos de acceso y seguridad de claves del Registro.

[out] phkResult

Puntero a una variable que recibe un identificador de la clave abierta. Si la clave no es una de las claves del Registro predefinidas, llame a la función RegCloseKey después de haber terminado de usar el identificador .

Valor devuelto

Si la función se ejecuta correctamente, se ERROR_SUCCESS el valor devuelto.

Si se produce un error en la función, el valor devuelto es un código de error distinto de cero definido en Winerror.h. Puede usar la función FormatMessage con la marca FORMAT_MESSAGE_FROM_SYSTEM para obtener una descripción genérica del error.

Nota

En versiones heredadas de Windows, esta API también se expone mediante kernel32.dll.

Observaciones

A diferencia de la función RegCreateKeyEx , la función RegOpenKeyEx no crea la clave especificada si la clave no existe en el Registro.

Algunas operaciones del Registro realizan comprobaciones de acceso en el descriptor de seguridad de la clave, no en la máscara de acceso especificada cuando se obtuvo el identificador de la clave. Por ejemplo, incluso si se abre una clave con un samDesired de KEY_READ, se puede usar para crear claves del Registro si el descriptor de seguridad de la clave permite. Por el contrario, la función RegSetValueEx requiere específicamente que la clave se abra con el derecho de acceso KEY_SET_VALUE.

Si el servicio o la aplicación suplantan a distintos usuarios, no use esta función con HKEY_CURRENT_USER. En su lugar, llame a la función RegOpenCurrentUser .

Tenga en cuenta que las operaciones que acceden a determinadas claves del Registro se redirigen. Para obtener más información, vea de virtualización del Registro y datos de aplicación de 32 y 64 bits en el Registro.

Ejemplos

lResult = RegOpenKeyEx (hKeyRoot, lpSubKey, 0, KEY_READ, &hKey);

if (lResult != ERROR_SUCCESS) 
{
    if (lResult == ERROR_FILE_NOT_FOUND) {
        printf("Key not found.\n");
        return TRUE;
    } 
    else {
        printf("Error opening key.\n");
        return FALSE;
    }
}

Para ver este ejemplo en contexto, consulte Eliminación de una clave con subclaves.

Nota

El encabezado winreg.h define RegOpenKeyEx como alias que selecciona automáticamente la versión ANSI o Unicode de esta función en función de la definición de la constante de preprocesador UNICODE. La combinación del uso del alias neutral de codificación con código que no es neutral de codificación puede dar lugar a errores de coincidencia que dan lugar a errores de compilación o tiempo de ejecución. Para obtener más información, vea Conventions for Function Prototypes.

Requisitos

Requisito Valor
cliente mínimo admitido Windows 2000 Professional [solo aplicaciones de escritorio]
servidor mínimo admitido Windows 2000 Server [solo aplicaciones de escritorio]
de la plataforma de destino de Windows
encabezado de winreg.h (incluya Windows.h)
biblioteca de Advapi32.lib
DLL de Advapi32.dll

Consulte también

RegCloseKey

RegCreateKeyEx

RegDeleteKey

regOpenKeyTransacted

funciones del Registro

de información general del Registro de