Función RegCreateKeyExA (winreg.h)

Crea la clave del Registro especificada. Si la clave ya existe, la función la abre. 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 RegCreateKeyTransacted .

Las aplicaciones que realicen copias de seguridad o restaure el estado del sistema, incluidos los archivos del sistema y los subárboles del Registro, deben usar el Servicio de instantáneas de volumen en lugar de las funciones del Registro.

Sintaxis

LSTATUS RegCreateKeyExA(
  [in]            HKEY                        hKey,
  [in]            LPCSTR                      lpSubKey,
                  DWORD                       Reserved,
  [in, optional]  LPSTR                       lpClass,
  [in]            DWORD                       dwOptions,
  [in]            REGSAM                      samDesired,
  [in, optional]  const LPSECURITY_ATTRIBUTES lpSecurityAttributes,
  [out]           PHKEY                       phkResult,
  [out, optional] LPDWORD                     lpdwDisposition
);

Parámetros

[in] hKey

Identificador de una clave del Registro abierta. El proceso de llamada debe tener KEY_CREATE_SUB_KEY acceso a la clave. Para obtener más información, consulte Derechos de acceso y seguridad de clave del Registro.

El acceso para la creación de claves se comprueba con el descriptor de seguridad de la clave del Registro, no con la máscara de acceso especificada cuando se obtuvo el identificador. Por lo tanto, incluso si hKey se abrió con un samDesired de KEY_READ, se puede usar en operaciones que modifiquen el registro si lo permiten sus descriptores de seguridad.

La función RegCreateKeyEx o RegOpenKeyEx devuelve este identificador, o bien puede ser una de las siguientes claves predefinidas:

HKEY_CLASSES_ROOT
HKEY_CURRENT_CONFIG
HKEY_CURRENT_USER
HKEY_LOCAL_MACHINE
HKEY_USERS

[in] lpSubKey

El nombre de una subclave que esta función abre o crea. La subclave especificada debe ser una subclave de la clave identificada por el parámetro hKey ; puede ser de hasta 32 niveles en profundidad en el árbol del Registro. Para obtener más información sobre los nombres de clave, vea Estructura del Registro.

Si lpSubKey es un puntero a una cadena vacía, phkResult recibe un nuevo identificador de la clave especificada por hKey.

Este parámetro no puede ser NULL.

Reserved

Este parámetro está reservado y debe ser cero.

[in, optional] lpClass

El tipo de clase definido por el usuario de esta clave. Este parámetro se puede ignorar. Este parámetro puede ser NULL.

[in] dwOptions

Este parámetro puede ser uno de los valores siguientes.

Valor Significado
REG_OPTION_BACKUP_RESTORE
0x00000004L
Si se establece esta marca, la función omite el parámetro samDesired e intenta abrir la clave con el acceso necesario para realizar una copia de seguridad o restaurar la clave. Si el subproceso que realiza la llamada tiene habilitado el privilegio SE_BACKUP_NAME, la clave se abre con el ACCESS_SYSTEM_SECURITY y KEY_READ derechos de acceso. Si el subproceso que realiza la llamada tiene habilitado el privilegio SE_RESTORE_NAME, a partir de Windows Vista, la clave se abre con los derechos de acceso ACCESS_SYSTEM_SECURITY, DELETE y KEY_WRITE. Si ambos privilegios están habilitados, la clave tiene los derechos de acceso combinados para ambos privilegios. Para más información, consulte Ejecución con privilegios especiales.
REG_OPTION_CREATE_LINK
0x00000002L
Nota Los vínculos simbólicos del Registro solo se deben usar para la compatibilidad de aplicaciones cuando sea absolutamente necesario.
 
Esta clave es un vínculo simbólico. La ruta de acceso de destino se asigna al valor L"SymbolicLinkValue" de la clave. La ruta de acceso de destino debe ser una ruta de acceso absoluta del Registro.
REG_OPTION_NON_VOLATILE
0x00000000L
Esta clave no es volátil; este es el valor predeterminado. La información se almacena en un archivo y se conserva cuando se reinicia el sistema. La función RegSaveKey guarda las claves que no son volátiles.
REG_OPTION_VOLATILE
0x00000001L
Todas las claves creadas por la función son volátiles. La información se almacena en memoria y no se conserva cuando se carga el subárbol del Registro correspondiente. Por HKEY_LOCAL_MACHINE, esto solo se produce cuando el sistema inicia un apagado completo. En el caso de las claves del Registro cargadas por la función RegLoadKey , esto ocurre cuando se realiza la propiedad RegUnLoadKey correspondiente. La función RegSaveKey no guarda las claves volátiles. Esta marca se omite para las claves que ya existen.
Nota En un apagado seleccionado por el usuario, un apagado rápido de inicio es el comportamiento predeterminado para el sistema.
 

[in] samDesired

Máscara que especifica los derechos de acceso para la clave que se va a crear. Para obtener más información, consulte Derechos de acceso y seguridad de clave del Registro.

[in, optional] lpSecurityAttributes

Puntero a una estructura de SECURITY_ATTRIBUTES que determina si los procesos secundarios pueden heredar el identificador devuelto. Si lpSecurityAttributes es NULL, no se puede heredar el identificador.

El miembro lpSecurityDescriptor de la estructura especifica un descriptor de seguridad para la nueva clave. Si lpSecurityAttributes es NULL, la clave obtiene un descriptor de seguridad predeterminado. Las ACL de un descriptor de seguridad predeterminado para una clave se heredan de su clave primaria directa.

[out] phkResult

Puntero que apunta a una variable que recibe un identificador de la clave abierta o creada. Si la clave no es una de las claves del Registro predefinidas, llame a la función RegCloseKey una vez que haya terminado de usar el identificador .

[out, optional] lpdwDisposition

Puntero a una variable que recibe uno de los siguientes valores de disposición.

Valor Significado
REG_CREATED_NEW_KEY
0x00000001L
La clave no existía y se creó.
REG_OPENED_EXISTING_KEY
0x00000002L
La clave existía y simplemente se abrió sin cambiar.
 

Si lpdwDisposition es NULL, no se devuelve ninguna información de eliminación.

Valor devuelto

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

Si la función no se ejecuta correctamente, 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.

Comentarios

La clave que crea la función RegCreateKeyEx no tiene valores. Una aplicación puede usar la función RegSetValueEx para establecer valores de clave.

La función RegCreateKeyEx crea todas las claves que faltan en la ruta de acceso especificada. Una aplicación puede aprovechar este comportamiento para crear varias claves a la vez. Por ejemplo, una aplicación puede crear una subclave de cuatro niveles en profundidad al mismo tiempo que las tres subclaves anteriores especificando una cadena de la siguiente forma para el parámetro lpSubKey :

subclave1\subkey2\subkey3\subkey4

Tenga en cuenta que este comportamiento dará lugar a la creación de claves no deseadas si una clave existente en la ruta de acceso se escribe incorrectamente.

Una aplicación no puede crear una clave que sea un elemento secundario directo de HKEY_USERS o HKEY_LOCAL_MACHINE. Una aplicación puede crear subclaves en niveles inferiores de los árboles de HKEY_USERS o HKEY_LOCAL_MACHINE .

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, consulte Virtualización del Registro y datos de aplicación de 32 y 64 bits en el Registro.

Nota

El encabezado winreg.h define RegCreateKeyEx 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 Convenciones para prototipos de función.

Requisitos

Requisito Value
Cliente mínimo compatible Windows 2000 Professional [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows 2000 Server [solo aplicaciones de escritorio]
Plataforma de destino Windows
Encabezado winreg.h (incluye Windows.h)
Library Advapi32.lib
Archivo DLL Advapi32.dll

Consulte también

RegCloseKey

RegDeleteKey

RegOpenKeyEx

RegSaveKey

Funciones del Registro

Introducción al Registro

SECURITY_ATTRIBUTES