Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Cuándo usar el Registro
El registro de Windows es adecuado para almacenar pequeñas cantidades de datos de configuración (configuración, preferencias, estado por usuario). Considere alternativas para otros escenarios:
| Scenario | Recommendation |
|---|---|
| Configuración de la aplicación (aplicaciones modernas) | Prefiere ApplicationData.LocalSettings (UWP/WinUI) o un archivo JSON/XML en %APPDATA% para aplicaciones de escritorio. Son más fáciles de realizar copias de seguridad, migrar y depurar. |
| Datos grandes o datos estructurados | Use un archivo (JSON, SQLite, etc.) en lugar de almacenar blobs grandes en valores del Registro. |
| Configuración del servicio para toda la máquina | El registro bajo HKEY_LOCAL_MACHINE es adecuado: este es el mecanismo estándar para los servicios de Windows. |
| Preferencias por usuario (aplicaciones de escritorio) | El registro bajo HKEY_CURRENT_USER\Software\<Company>\<App> es adecuado y convencional. |
| Estado compartido entre procesos | Considere la posibilidad de tener en cuenta la memoria compartida con nombre, las canalizaciones con nombre o un archivo: el registro no tiene ninguna notificación de cambio integrada en lecturas de valor. Use RegNotifyChangeKeyValue solo para la notificación general. |
Importante
Procedimientos recomendados de seguridad: abra las claves del Registro con los derechos de acceso mínimos necesarios (por ejemplo, KEY_READ o KEY_WRITE) : evite usar KEY_ALL_ACCESS o MAXIMUM_ALLOWED. Escriba en HKEY_LOCAL_MACHINE solo desde procesos elevados (administrador). Compruebe siempre los valores devueltos de las funciones del Registro: devuelven ERROR_SUCCESS correctamente y un código de error win32 en caso de error (no HRESULT).
Note
Problema común: tipos de cadena: los valores de cadena del Registro (REG_SZ, REG_EXPAND_SZ) deben incluir el terminador NULL en el recuento de bytes pasado a RegSetValueEx. Al leer cadenas con RegQueryValueEx o RegGetValue, siempre finaliza el búfer si el valor almacenado podría no incluir el terminador: algún software de terceros escribe cadenas sin él.
A continuación se muestran las funciones del Registro.
| Función | Descripción |
|---|---|
| GetSystemRegistryQuota | Recupera el tamaño actual del registro y el tamaño máximo que el registro puede alcanzar en el sistema. |
| regCloseKey | Cierra un identificador de la clave del Registro especificada. |
| regConnectRegistry | Establece una conexión a un identificador de registro predefinido en otro equipo. |
| RegCopyTree de | Copia la clave del Registro especificada, junto con sus valores y subclaves, en la clave de destino especificada. |
| RegCreateKeyEx | Crea la clave del Registro especificada. |
| RegCreateKeyTransacted | Crea la clave del Registro especificada y la asocia a una transacción. |
| regDeleteKey | Elimina una subclave y sus valores. |
| regDeleteKeyEx | Elimina una subclave y sus valores de la vista específica de la plataforma especificada del Registro. |
| regDeleteKeyTransacted | Elimina una subclave y sus valores de la vista específica de la plataforma especificada del Registro como una operación de transacción. |
| regDeleteKeyValue | Quita el valor especificado de la clave del Registro y la subclave especificadas. |
| RegDeleteTree | Elimina las subclaves y los valores de la clave especificada de forma recursiva. |
| regDeleteValue | Quita un valor con nombre de la clave del Registro especificada. |
| regDisablePredefinedCache | Deshabilita el almacenamiento en caché del controlador de registro predefinido para HKEY_CURRENT_USER para el proceso actual. |
| RegDisablePredefinedCacheEx | Deshabilita el almacenamiento en caché de todos los identificadores de registro predefinidos para el proceso actual. |
| RegDisableReflectionKey | Deshabilita la reflexión del Registro para la clave especificada. |
| regEnableReflectionKey | Habilita la reflexión del Registro para la clave deshabilitada especificada. |
| regEnumKeyEx | Enumera las subclaves de la clave del Registro abierta especificada. |
| regEnumValue | Enumera los valores de la clave del Registro abierta especificada. |
| regFlushKey | Escribe todos los atributos de la clave del Registro abierta especificada en el Registro. |
| RegGetKeySecurity | Recupera una copia del descriptor de seguridad que protege la clave del Registro abierta especificada. |
| RegGetValue | Recupera el tipo y los datos del valor del Registro especificado. |
| regLoadKey | Crea una subclave en HKEY_USERS o HKEY_LOCAL_MACHINE y almacena información de registro de un archivo especificado en esa subclave. |
| RegLoadMUIString | Carga la cadena especificada de la clave y la subclave especificadas. |
| regNotifyChangeKeyValue | Notifica al autor de la llamada los cambios en los atributos o el contenido de una clave del Registro especificada. |
| RegOpenCurrentUser | Recupera un identificador de la clave HKEY_CURRENT_USER para el usuario que suplanta el subproceso actual. |
| regOpenKeyEx | Abre la clave del Registro especificada. |
| regOpenKeyTransacted | Abre la clave del Registro especificada y la asocia a una transacción. |
| RegOpenUserClassesRoot | Recupera un identificador de la clave HKEY_CLASSES_ROOT para el usuario especificado. |
| regOverridePredefKey | Asigna una clave del Registro predefinida a una clave del Registro especificada. |
| RegQueryInfoKey | Recupera información sobre la clave del Registro especificada. |
| regQueryMultipleValues | Recupera el tipo y los datos de una lista de nombres de valor asociados a una clave del Registro abierta. |
| RegQueryReflectionKey | Determina si la reflexión se ha deshabilitado o habilitado para la clave especificada. |
| regQueryValueEx | Recupera el tipo y los datos de un nombre de valor especificado asociado a una clave del Registro abierta. |
| regRenameKey | Cambia el nombre de la clave del Registro especificada. |
| regReplaceKey | Reemplaza el archivo que respalda una clave del Registro y todas sus subclaves por otro archivo. |
| regRestoreKey | Lee la información del Registro en un archivo especificado y la copia sobre la clave especificada. |
| regSaveKey | Guarda la clave especificada y todos sus subclaves y valores en un nuevo archivo. |
| regSaveKeyEx | Guarda la clave especificada y todos sus subclaves y valores en un nuevo archivo. Puede especificar el formato de la clave guardada o hive. |
| RegSetKeyValue | Establece los datos del valor especificado en la clave del Registro y la subclave especificados. |
| RegSetKeySecurity | Establece la seguridad de una clave del Registro abierta. |
| RegSetValueEx | Establece los datos y el tipo de un valor especificado en una clave del Registro. |
| regUnLoadKey | Descarga la clave del Registro especificada y sus subclaves del Registro. |
Las siguientes funciones de shell se pueden usar con el Registro:
- AssocCreate
- assocQueryKey de
- assocQueryString
- assocQueryStringByKey de
- SHCopyKey
- SHDeleteEmptyKey
- SHDeleteKey
- SHDeleteValue
- SHEnumKeyEx
- SHEnumValue
- SHGetValue
- SHQueryInfoKey
- SHQueryValueEx
- SHRegCloseUSKey
- SHRegCreateUSKey de
- SHRegDeleteEmptyUSKey
- SHRegDeleteUSValue
- SHRegDuplicateHKey
- SHRegEnumUSKey
- SHRegEnumUSValue
- SHRegGetBoolUSValue
- SHRegGetIntW
- SHRegGetPath
- SHRegGetUSValue
- SHRegOpenUSKey
- SHRegQueryInfoUSKey
- SHRegQueryUSValue
- SHRegSetPath
- SHRegSetUSValue
- SHRegWriteUSValue
- SHSetValue
A continuación se muestran las funciones initialization-file. Recuperan información de y copian información en un archivo de inicialización definido por el sistema o la aplicación. Estas funciones solo se proporcionan por compatibilidad con versiones de 16 bits de Windows. Las nuevas aplicaciones deben usar el Registro.
| Función | Descripción |
|---|---|
| GetPrivateProfileInt | Recupera un entero asociado a una clave en la sección especificada de un archivo de inicialización. |
| GetPrivateProfileSection | Recupera todas las claves y valores de la sección especificada de un archivo de inicialización. |
| GetPrivateProfileSectionNames | Recupera los nombres de todas las secciones de un archivo de inicialización. |
| GetPrivateProfileString | Recupera una cadena de la sección especificada en un archivo de inicialización. |
| getPrivateProfileStruct | Recupera los datos asociados a una clave de la sección especificada de un archivo de inicialización. |
| GetProfileInt | Recupera un entero de una clave en la sección especificada del archivo Win.ini. |
| GetProfileSection | Recupera todas las claves y valores de la sección especificada del archivo Win.ini. |
| GetProfileString | Recupera la cadena asociada a una clave en la sección especificada del archivo Win.ini. |
| WritePrivateProfileSection | Reemplaza las claves y los valores de la sección especificada en un archivo de inicialización. |
| WritePrivateProfileString | Copia una cadena en la sección especificada de un archivo de inicialización. |
| writePrivateProfileStruct | Copia los datos en una clave de la sección especificada de un archivo de inicialización. |
| WriteProfileSection | Reemplaza el contenido de la sección especificada en el archivo Win.ini por claves y valores especificados. |
| WriteProfileString | Copia una cadena en la sección especificada del archivo Win.ini. |
Funciones obsoletas
Estas funciones solo se proporcionan para la compatibilidad con versiones de 16 bits de Windows: