Directiva AddReg de INF

Una directiva AddReg hace referencia a una o varias secciones definidas por INF-writer _add-registry-sections* que se usan para modificar o crear información del Registro.

[DDInstall] | 
[DDInstall.HW] | 
[DDInstall.CoInstallers] | 
[ClassInstall32] | 
[ClassInstall32.ntx86] | 
[ClassInstall32.ntia64] | (Windows XP and later versions of Windows)
[ClassInstall32.ntamd64] | (Windows XP and later versions of Windows) 
[ClassInstall32.ntarm] | (Windows 8 and later versions of Windows) 
[ClassInstall32.ntarm64] | (Windows 10 version 1709 and later versions of Windows) 
[install-interface-section] | 
[service-install-section] | 
[event-log-install] | 
[add-interface-section]

AddReg=add-registry-section[,add-registry-section] ...

Cada sección add-registry puede tener entradas para hacer lo siguiente:

  • Agregue nuevas claves, posiblemente con entradas de valor iniciales, al Registro.

  • Agregue nuevas entradas de valor a las claves del Registro existentes.

  • Modifique las entradas de valor existentes de claves concretas en el Registro.

Cada sección add-registry-section con nombre a la que hace referencia una directiva AddReg tiene el siguiente formato:

[add-registry-section]
reg-root,[subkey],[value-entry-name],[flags],[value][,[value]]
reg-root,[subkey],[value-entry-name],[flags],[value][,[value]]
 ...

[[add-registry-section.security]
"security-descriptor-string"]

Una sección add-registry puede tener cualquier número de entradas, cada una en una línea independiente. Un INF también puede contener una o varias secciones opcionales add-registry-section.security, cada una de las cuales especifica un descriptor de seguridad que se aplica a todos los valores del Registro descritos en una sección con nombre add-registry.

Entradas

reg-root
Identifica la raíz del árbol del Registro para otros valores proporcionados en esta entrada. El valor puede ser uno de los siguientes:

HKCR
Abreviatura de HKEY_CLASSES_ROOT

HKCU
Abreviatura de HKEY_CURRENT_USER

HKLM
Abreviatura de HKEY_LOCAL_MACHINE

HKU
Abreviatura de HKEY_USERS

HKR
Raíz relativa, en la que las claves especificadas mediante esta abreviatura son relativas a la clave del Registro asociada a la sección INF en la que aparece esta directiva AddReg , como se indica en la tabla siguiente.

Sección INF que contiene la directiva AddReg Clave del Registro a la que hace referencia HKR
Sección INF DDInstall Clave de software del dispositivo
INF DDInstall. Sección HW Clave de hardware del dispositivo
Sección INF [service-install-section] Clave de servicios
Sección INF [event-log-install] La clave EventLog
Sección INF [add-interface-section] Clave del Registro de la interfaz del dispositivo

Nota

HKR no se puede usar en una sección add-registry-referenced desde una sección DefaultInstall de INF.

Para obtener más información sobre la información del controlador almacenada en la raíz de HKEY_LOCAL_MACHINE , consulte Árboles y claves del Registro para dispositivos y controladores.

subkey
Este valor opcional, formado como un token %strkey% definido en una sección Strings del INF o como una ruta de acceso del Registro en la raíz reg especificada (key1\key2\key3...), especifica uno de los siguientes:

  • Una nueva subclave que se va a agregar al Registro al final de la ruta de acceso del Registro especificada.
  • Subclave existente en la que se escriben los valores adicionales especificados en esta entrada (posiblemente reemplazando el valor de una entrada de valor con nombre existente de la subclave especificada).
  • Ambas subclaves nuevas que se van a agregar al Registro junto con su entrada de valor inicial.

value-entry-name
Este valor opcional asigna un nombre a una entrada de valor existente en la subclave (existente) especificada o crea el nombre de una nueva entrada de valor que se va a agregar en la subclave especificada, ya sea que ya exista o sea una nueva clave que se va a agregar al Registro. Este valor se puede expresar como "cadena entre comillas" o como un token %strkey% que se define en la sección Cadenas de INF. (Si se omite para un valor de tipo cadena, value-entry-name es la entrada de valor "sin nombre" predeterminada para esta clave).

El sistema operativo admite algunas palabras clave special value-entry-name definidas por el sistema. Vea el final de esta sección comentarios para obtener más información.

flags
Este valor hexadecimal opcional, expresado como máscara de bits ORed de valores de marca de palabra baja y alta definidos por el sistema, define el tipo de datos para una entrada de valor o controla la operación add-registry.

Los valores de máscara de bits para cada una de estas marcas son los siguientes:

0x00000001 (FLG_ADDREG_BINVALUETYPE)
El valor especificado es datos "sin procesar". (Este valor es idéntico al FLG_ADDREG_TYPE_BINARY).

0x00000002 (FLG_ADDREG_NOCLOBBER)
Impedir que un valor determinado reemplace el valor de una entrada de valor existente.

0x00000004 (FLG_ADDREG_DELVAL)
Elimine la subclave especificada del Registro o elimine el nombre de entrada de valor especificado de la subclave del Registro especificada.

0x00000008 (FLG_ADDREG_APPEND)
Anexe un valor determinado al de una entrada de valor con nombre existente. Esta marca solo es válida si también se establece FLG_ADDREG_TYPE_MULTI_SZ. El valor de cadena especificado no se anexa si ya existe.

0x00000010 (FLG_ADDREG_KEYONLY)
Cree la subclave especificada, pero omita cualquier nombre de entrada de valor proporcionado o valor.

0x00000020 (FLG_ADDREG_OVERWRITEONLY)
Restablezca el valor proporcionado solo si el nombre de entrada de valor especificado ya existe en la subclave especificada.

0x00001000 (FLG_ADDREG_64BITKEY)
(Windows XP y versiones posteriores de Windows). Realice el cambio especificado en el Registro de 64 bits. Si no se especifica, el cambio se realiza en el registro nativo.

0x00002000 (FLG_ADDREG_KEYONLY_COMMON)
(Windows XP y versiones posteriores de Windows). Esto es lo mismo que FLG_ADDREG_KEYONLY, pero también funciona en una sección del registro de una directiva INF DelReg.

0x00004000 (FLG_ADDREG_32BITKEY)
(Windows XP y versiones posteriores de Windows). Realice el cambio especificado en el Registro de 32 bits. Si no se especifica, el cambio se realiza en el registro nativo.

0x00000000 (FLG_ADDREG_TYPE_SZ)
La entrada de valor y/o valor especificado es de tipo REG_SZ.

Nota

Este valor es el tipo predeterminado para una entrada de valor especificada, por lo que el valor de marcas se puede omitir de cualquier línea reg-root= en una sección de add-registry-section que funciona en una entrada de valor de este tipo.

0x00010000 (FLG_ADDREG_TYPE_MULTI_SZ)
La entrada de valor y/o valor especificado es del tipo de registro REG_MULTI_SZ. El campo de valor siguiente puede ser una lista de cadenas separadas por comas. Esta especificación no requiere ningún terminador NULL para un valor de cadena determinado.

0x00020000 (FLG_ADDREG_TYPE_EXPAND_SZ)
El nombre de entrada de valor especificado y/o el valor es del tipo de registro REG_EXPAND_SZ.

0x00010001 (FLG_ADDREG_TYPE_DWORD)
El nombre de entrada de valor y/o valor especificado es del tipo de registro REG_DWORD.

0x00020001 (FLG_ADDREG_TYPE_NONE)
El nombre de entrada de valor especificado y/o el valor es del tipo de registro REG_NONE.

value
Opcionalmente, especifica un nuevo valor para que el nombre de entrada de valor especificado se agregue a la clave del Registro especificada. Este valor puede ser un valor de "reemplazo" para una entrada de valor con nombre existente en una clave existente, un valor que se va a anexar (valor de marca 0x00010008) a una entrada de valor de tipo REG_MULTI_SZ existente en una clave existente, una nueva entrada de valor que se va a escribir en una clave existente o la entrada de valor inicial de una nueva subclave que se va a agregar al Registro.

La expresión de este valor depende del tipo de registro especificado para la marca, como se indica a continuación:

  • Un valor de tipo de cadena del Registro se puede expresar como una "cadena entre comillas" o como un token %strkey% definido en una sección Strings del archivo INF. Este valor especificado por INF no tiene que incluir un terminador NULL al final de cada cadena.

  • Un valor de tipo numérico del Registro se puede expresar como hexadecimal (mediante notación 0x) o número decimal.

security-descriptor-string
Especifica un descriptor de seguridad que se aplicará a todas las entradas del Registro creadas por la sección add-registry-section con nombre. La cadena security-descriptor-string es una cadena con tokens para indicar el componente de seguridad DACL (D:).

Si no se especifica una sección add-registry-section.security, las entradas del Registro heredan la configuración de seguridad de la clave primaria.

Si se especifica una sección add-registry-section.security, se deben incluir las siguientes ACE para que se puedan producir instalaciones y actualizaciones de dispositivos y service packs del sistema:

  • (A;; GA;;; SY) – Concede todo el acceso al sistema local.
  • (A;; GA;;; BA) – Concede acceso a todos los administradores integrados.

No especifique cadenas ACE que concedan acceso de escritura a usuarios sin privilegios.

Para obtener información sobre las cadenas de descriptores de seguridad, vea Security Descriptor Definition Language (Windows). Para obtener información sobre el formato de las cadenas de descriptor de seguridad, vea Security Descriptor Definition Language (Windows).

Para obtener más información sobre cómo especificar descriptores de seguridad, consulte Creación de instalaciones de dispositivos seguros.

Comentarios

Se puede especificar una directiva AddReg en cualquiera de las secciones que se muestran en la instrucción de sintaxis formal anterior. Esta directiva también se puede especificar en cualquiera de las siguientes secciones definidas por INF-writer:

Cada nombre de sección add-registry-section debe ser único para el archivo INF, pero se puede hacer referencia a él mediante directivas AddReg en otras secciones del mismo INF. Cada nombre de sección debe seguir las reglas generales para definir los nombres de sección descritos en Reglas de sintaxis generales para archivos INF.

Nota

El bit de orden inferior de la palabra baja en un valor de marca distingue entre los datos binarios y de caracteres.

Para representar un número de un tipo de registro distinto de uno de los tipos predefinidos REG_XXX , especifique un nuevo número de tipo en la palabra alta de la marca ORed con FLG_ADDREG_BINVALUETYPE en su palabra baja.

Los datos de este valor deben especificarse en formato binario como una secuencia de bytes separados por comas. Por ejemplo, para almacenar 16 bytes de datos de un nuevo tipo de datos del Registro, como 0x38, como una entrada de valor, la entrada de sección add-registry sería similar a la siguiente:

HKR,,MYValue,0x00380001,1,0,2,3,4,5,6,7,8,9,A,B,C,D,E,F

Esta técnica se puede usar para definir nuevos tipos de registro para valores numéricos, pero no para valores de tipo REG_EXPAND_SZ, REG_MULTI_SZ, REG_NONE o REG_SZ. Para obtener más información sobre estos tipos, consulte Tipos de valor del Registro.

Palabras clave especiales value-entry-name

Las palabras clave especiales se definen para su uso en las entradas HKR AddReg . El formato de las entradas que usan estas palabras clave es el siguiente:

[HKR,,DeviceCharacteristics,0x10001,characteristics] 
[HKR,,DeviceType,0x10001,device-type] 
[HKR,,Security,,security-descriptor-string] 
[HKR,,UpperFilters,0x10000,service-name] 
[HKR,,LowerFilters,0x10000,service-name] 
[HKR,,Exclusive,0x10001,exclusive-device] 
[HKR,,EnumPropPages32,,"prop-provider.dll,provider-entry-point"]
[HKR,,LocationInformationOverride,,"text-string"] 
[HKR,,ResourcePickerTags,,"text-string"] 
[HKR,,ResourcePickerExceptions,,"text-string"] ,

A continuación se describen las entradas ADDReg de HKR que usan estas palabras clave especiales:

DeviceCharacteristics
Una entrada DeviceCharacteristics HKR AddReg especifica las características del dispositivo. El valor de las características es un valor numérico que es el resultado de usar OR en uno o varios valores de características de archivo FILE_*, que se definen en Wdm.h y Ntddk.h.

Solo se pueden especificar los valores siguientes en un INF:

#define FILE_REMOVABLE_MEDIA            0x00000001
#define FILE_READ_ONLY_DEVICE           0x00000002
#define FILE_FLOPPY_DISKETTE            0x00000004
#define FILE_WRITE_ONCE_MEDIA           0x00000008
#define FILE_DEVICE_SECURE_OPEN         0x00000100

Para obtener una descripción de estos valores, consulte IoCreateDevice.

Los valores de características, que se especifican mediante una entrada DeviceCharacteristics , son ORed con los especificados en cada llamada a IoCreateDevice que crea un objeto de dispositivo en la pila de dispositivos. La operación OR se produce después de agregar todos los objetos de dispositivo, pero antes de que se inicie el dispositivo.

El valor de las características (incluido un valor de cero) invalida las características de dispositivo de toda clase que se especificaron en el INF del instalador de clase asociado.

Para obtener más información sobre las características del dispositivo, consulte Especificación de características del dispositivo.

DeviceType
Una entrada DeviceType HKR AddReg especifica un tipo de dispositivo para el dispositivo. El tipo de dispositivo es el valor numérico de una constante FILE_DEVICE_XXX definida en Wdm.h o Ntddk.h. El valor de marca de 0x10001 especifica que el valor de tipo de dispositivo es un REG_DWORD. Para obtener más información, vea Especificar tipos de dispositivo.

Un INF del instalador de clase debe especificar el tipo de dispositivo que se aplica a todos los dispositivos de la clase o casi todos. Por ejemplo, si los dispositivos de la clase son de tipo FILE_DEVICE_CD_ROM, especifique un tipo de dispositivo de 0x02. Si un dispositivo INF especifica un valor para DeviceType, invalida el valor establecido por el instalador de clase, si existe. Si la clase o el dispositivo INF especifica un valor DeviceType , el administrador de PnP aplica ese tipo al objeto de dispositivo físico (PDO) creado por el controlador de bus del dispositivo.

Seguridad
Una entrada Security HKR AddReg especifica un descriptor de seguridad para el dispositivo. La cadena security-descriptor-string es una cadena con tokens para indicar el componente de seguridad DACL (D:).

Un INF del instalador de clases puede especificar un descriptor de seguridad para una clase de dispositivo. Un dispositivo INF puede especificar un descriptor de seguridad para un dispositivo individual, reemplazando la seguridad de la clase . Si la clase o device INF especifica una cadena security-descriptor-string, el administrador de PnP propaga el descriptor a todos los objetos de dispositivo ( DO) de un dispositivo. Esto incluye el objeto de dispositivo de función (FDO), los DO de filtro opcionales y el PDO.

Para obtener información sobre el formato de las cadenas de descriptor de seguridad, consulte la documentación de Microsoft Windows SDK.

Para obtener más información sobre cómo especificar descriptores de seguridad, consulte Creación de instalaciones de dispositivos seguros.

UpperFilters
Una entrada UpperFilters HKR AddReg especifica un controlador de filtro superior PnP. Esta entrada en un DDInstall. La sección HW define uno o varios controladores de filtro superior específicos del dispositivo. En una sección ClassInstall32 , esta entrada define uno o varios controladores de filtro superior de toda la clase.

LowerFilters
Una entrada LowerFilters HKR AddReg especifica un controlador de filtro inferior PnP. Esta entrada en un DDInstall. La sección HW define uno o varios controladores de filtro inferior específicos del dispositivo. En una sección ClassInstall32 , esta entrada define uno o varios controladores de filtro inferior de toda la clase.

Exclusivo
Una entrada Exclusive HKR AddReg , si existe y se establece en "1", especifica que el dispositivo es un dispositivo exclusivo. De lo contrario, el dispositivo no se trata como exclusivo. Para obtener más información, vea Especificar el acceso exclusivo a objetos de dispositivo.

EnumPropPages32
Una entrada EnumPropPages32 HKR AddReg especifica el nombre de un archivo de biblioteca de vínculos dinámicos (DLL) que es un proveedor de páginas de propiedades específico del dispositivo. También especifica el nombre de la función de devolución de llamada ExtensionPropSheetPageProc implementada por el archivo DLL. Para obtener más información sobre las páginas de propiedades y las funciones, vea el Kit de desarrollo de software (SDK) de Microsoft Windows para Windows 7 y .NET Framework 4.0.

Importante

Tanto el nombre de la función de devolución de llamada DLL como ExtensionPropSheetPageProc deben incluirse entre comillas (" ").

LocationInformationOverride
(Windows XP y versiones posteriores de Windows) Se puede usar una entrada LocationInformationOverride HKR AddReg para especificar una cadena de texto que describa la ubicación física de un dispositivo. Reemplaza la cadena LocationInformation que el controlador de autobús del dispositivo proporciona en respuesta a una solicitud de IRP_MN_QUERY_DEVICE_TEXT .

ResourcePickerTags
Una entrada ResourcePickerTags HKR AddReg especifica etiquetas de selector de recursos para un dispositivo.

ResourcePickerExceptions
Una entrada ResourcePickerExceptions HKR AddReg especifica los conflictos de recursos permitidos para un dispositivo.

Ejemplos

Una directiva AddReg a la que se hace referencia a la sección de Miniport_EventLog_AddReg (SCSI) de este ejemplo, en una sección definida por INF-writer a la que hace referencia la directiva AddService en un DDInstall. Sección de servicios de este INF.

[Miniport_EventLog_AddReg]
HKR,,EventMessageFile,0x00020000,"%%SystemRoot%%\System32\IoLogMsg.dll" 
; double quotation marks delimiters in preceding entry prevent truncation 
; if line wraps
 
HKR,,TypesSupported,0x00010001,7 

Tenga en cuenta que puede especificar valores de marca en formato hexadecimal, como se muestra en el ejemplo, o bien puede definir marcadores de posición de cadena, como %FLG_ADDREG_TYPE_DWORD% en la sección [Cadenas] de cada archivo INF.

Consulte también

AddInterface

AddService

BitReg

ClassInstall32

DDInstall

DDInstall. CoInstallers

DDInstall. HW

DDInstall. Interfaces

DDInstall. Servicios

DelReg

InterfaceInstall32

Cadenas