Diretiva INF AddReg

Uma diretiva AddReg refere-se a uma ou mais _add-secções* de registo* definidas por escritores INF que são usadas para modificar ou criar informação de registo.

[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 secção de registo de adição pode ter entradas para fazer o seguinte:

  • Adiciona novas chaves, possivelmente com entradas de valor iniciais, ao registo.

  • Adicione novas entradas de valor às chaves existentes do registo.

  • Modificar entradas de valor existentes de chaves específicas no registo.

Cada secção de registo de adição nomeada referenciada por uma diretiva AddReg tem o seguinte 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"]

Uma secção de registo adicional pode ter qualquer número de entradas, cada uma numa linha separada. Um INF pode também conter uma ou mais secções opcionais add-registry-section.security, cada uma especificando um descritor de segurança que é aplicado a todos os valores do registo descritos numa secção add-registry nomeada.

Entradas

reg-root
Identifica a raiz da árvore do registo para outros valores fornecidos nesta entrada. O valor pode ser um dos seguintes:

HKCR
Abreviatura de HKEY_CLASSES_ROOT

HKCU
Abreviatura de HKEY_CURRENT_USER

HKLM
Abreviatura de HKEY_LOCAL_MACHINE

HKU
Abreviatura de HKEY_USERS

HKR
Raiz relativa, em que as chaves especificadas por esta abreviatura são relativas à chave do registo associada à secção INF onde esta diretiva AddReg aparece, conforme indicado na tabela seguinte.

Secção INF contendo a diretiva AddReg Chave do Registo Referenciada pela HKR
Secção INF DDInstall A chave de software do dispositivo
INF DDInstall. Secção de HW A chave de hardware do dispositivo
Secção INF [service-install-section] A chave dos Serviços
Secção INF [registo de eventos] A chave EventLog
Secção INF [add-interface-section] Chave de registo da interface do dispositivo

Note

O HKR não pode ser usado numa secção de registo adicional referenciada a partir de uma secção INF DefaultInstall.

Para mais informações sobre a informação dos drivers armazenada na raiz HKEY_LOCAL_MACHINE , consulte Árvores de Registo e Chaves para Dispositivos e Controladores.

Subchave
Este valor opcional, formado quer como um token %strkey% definido numa secção Strings do INF, quer como um caminho de registo sob a raiz registada dada (key1\key2\key3...), especifica um dos seguintes elementos:

  • Uma nova subchave a ser adicionada ao registo no final do caminho do registo indicado.
  • Uma subchave existente na qual os valores adicionais especificados nesta entrada estão escritos (possivelmente substituindo o valor de uma entrada de valor nomeada existente da subchave dada).
  • Tanto uma nova subchave a ser adicionada ao registo como a sua introdução inicial de valor.

Nome-Entrada-Valor
Este valor opcional nomeia uma entrada de valor existente na subchave dada (existente) ou cria o nome de uma nova entrada de valor a ser adicionada na subchave especificada, quer já exista ou seja uma nova chave a ser adicionada ao registo. Este valor pode ser expresso tanto como "string aspas" como um token %strkey% definido na secção Strings do INF. (Se isto for omitido para um valor do tipo string, o nome da entrada de valor é a entrada padrão "sem nome" para esta chave.)

O sistema operativo suporta algumas palavras-chave especiais definidas pelo sistema , nomes de entrada de valor. Consulte o final desta secção de Observações para mais informações.

flags
Este valor hexadecimal opcional, expresso como uma máscara de bits OR de valores de palavra baixa e flag de palavra alta definidos pelo sistema, define o tipo de dado para uma entrada de valor e/ou controla a operação de somar o registo.

Os valores da máscara de bits para cada uma destas bandeiras são os seguintes:

0x00000001 (FLG_ADDREG_BINVALUETYPE)
O valor dado são dados "brutos". (Este valor é idêntico ao FLG_ADDREG_TYPE_BINARY.)

0x00000002 (FLG_ADDREG_NOCLOBBER)
Impedir que um dado valor substitua o valor de uma entrada de valor existente.

0x00000004 (FLG_ADDREG_DELVAL)
Apague a subchave dada do registo, ou elimine o valor-nome-entrada-especificado da subchave do registo especificado.

0x00000008 (FLG_ADDREG_APPEND)
Acrescente um valor dado ao de uma entrada de valor nomeada existente. Esta bandeira só é válida se FLG_ADDREG_TYPE_MULTI_SZ também estiver definido. O valor especificado da cadeia não é acrescentado se já existir.

0x00000010 (FLG_ADDREG_KEYONLY)
Cria a subchave dada, mas ignora qualquer valor fornecido, entrada, nome e/ou valor.

0x00000020 (FLG_ADDREG_OVERWRITEONLY)
Reiniciar para o valor fornecido apenas se o valor-nome-entrada-especificado já existir na subchave dada.

0x00001000 (FLG_ADDREG_64BITKEY)
(Windows XP e versões posteriores do Windows.) Faça a alteração especificada no registo de 64 bits. Se não for especificado, a alteração é feita no registo nativo.

0x00002000 (FLG_ADDREG_KEYONLY_COMMON)
(Windows XP e versões posteriores de Windows.) Isto é igual ao FLG_ADDREG_KEYONLY, mas também funciona numa secção de registo de uma diretiva INF DelReg.

0x00004000 (FLG_ADDREG_32BITKEY)
(Windows XP e versões posteriores do Windows.) Faça a alteração especificada no registo de 32 bits. Se não for especificado, a alteração é feita no registo nativo.

0x00000000 (FLG_ADDREG_TYPE_SZ)
A entrada e/ou valor dado é do tipo REG_SZ.

Note

Este valor é o tipo padrão para uma entrada de valor especificada, pelo que o valor de flags pode ser omitido de qualquer linha reg-root= numa secção add-registry que opere numa entrada de valor deste tipo.

0x00010000 (FLG_ADDREG_TYPE_MULTI_SZ)
A entrada e/ou valor dado é do tipo de registo REG_MULTI_SZ. O campo de valores que se segue pode ser uma lista de cadeias separadas por vírgulas. Esta especificação não exige nenhum terminador NULL para um dado valor de cadeia.

0x00020000 (FLG_ADDREG_TYPE_EXPAND_SZ)
O valor-nome-entrada-e /ou valor dado é do tipo de registo REG_EXPAND_SZ.

0x00010001 (FLG_ADDREG_TYPE_DWORD)
O valor-entrada-nome e/ou valor dado é do tipo de registo REG_DWORD.

0x00020001 (FLG_ADDREG_TYPE_NONE)
O valor-entrada-nome e/ou valor dado pertence ao tipo de registo REG_NONE.

0x000B0001 (FLG_ADDREG_TYPE_QWORD)
O valor-nome-entrada-e /ou valor dado é do tipo de registo REG_QWORD.

value
Isto especifica opcionalmente um novo valor para o valor-nome-entrada-especificado a ser adicionado à chave de registo dada. Tal valor pode ser um valor de "substituição" para uma entrada de valor nomeado existente numa chave existente, um valor a ser adicionado (valor de flag0x00010008) a uma entrada de valor nomeado do tipo REG_MULTI_SZ existente numa chave existente, uma nova entrada de valor a ser escrita numa chave existente, ou a entrada inicial de valor para uma nova subchave a ser adicionada ao registo.

A expressão de tal valor depende do tipo de registo especificado para a bandeira, da seguinte forma:

  • Um valor do tipo string do registo pode ser expresso tanto como uma "string aspas" como um token %strkey% definido numa secção Strings do ficheiro INF. Tal valor especificado por INF não tem de incluir um terminador NULL no final de cada cadeia.

  • Um valor numérico de registo pode ser expresso como um número hexadecimal (usando notação 0x) ou decimal.

security-descriptor-string
Especifica um descritor de segurança, a ser aplicado a todas as entradas do registo criadas pela secção add-registry nomeada. A cadeia de descrição de segurança é uma cadeia com tokens para indicar o componente de segurança DACL (D:).

Se uma secção add-registry-section.security não for especificada, as entradas do registo herdam as definições de segurança da chave principal.

Se for especificada uma secção add-registry-section.security, os seguintes ACE's devem ser incluídos para que possam ocorrer instalações e atualizações de dispositivos e pacotes de serviço do sistema:

  • (A;; GA;;; SY) − Concede todo o acesso ao sistema local.
  • (A;; GA;;; BA) − Concede todo o acesso a administradores incorporados.

Não especifique cadeias ACE que concedam acesso de escrita a utilizadores não privilegiados.

Para informações sobre cadeias de descritores de segurança, consulte Security Descriptor Definition Language (Windows). Para informações sobre o formato das cadeias de descritores de segurança, consulte Security Descriptor Definition Language (Windows).

Para mais informações sobre como especificar descritores de segurança, consulte Criação de Instalações Seguras de Dispositivos.

Remarks

Uma diretiva AddReg pode ser especificada em qualquer uma das secções apresentadas na declaração formal de sintaxe acima. Esta diretiva pode também ser especificada em qualquer uma das seguintes secções definidas pelo INF-writer:

Cada nome de secção de registo de adição deve ser único para o ficheiro INF, mas pode ser referenciado por diretivas AddReg noutras secções do mesmo INF. Cada nome de secção deve seguir as regras gerais para definir nomes de secção descritas nas Regras Gerais de Sintaxe para Ficheiros INF.

Note

O bit de ordem inferior da palavra baixa num valor de flag distingue entre dados de carácter e dados binários.

Para representar um número de um tipo de registo diferente de um dos tipos REG_XXX predefinidos, especifique um novo número de tipo na palavra alta da bandeira OR com FLG_ADDREG_BINVALUETYPE na palavra baixa.

Os dados para tal valor devem ser especificados em formato binário como uma sequência de bytes separados por vírgulas. Por exemplo, para armazenar 16 bytes de dados de um novo tipo de registo, como 0x38, como entrada de valor, a entrada da secção add-registry seria algo do género:

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

Esta técnica pode ser usada para definir novos tipos de registo para valores numéricos, mas não para valores do tipo REG_EXPAND_SZ, REG_MULTI_SZ, REG_NONE ou REG_SZ. Para mais informações sobre estes tipos, consulte Tipos de valor do registo.

Palavras-chave especiais de nome de entrada de valor

São definidas palavras-chave especiais para uso nas entradas do HKR AddReg . O formato das entradas que utilizam estas palavras-chave é o seguinte:

[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"] ,

O seguinte descreve as entradas do HKR AddReg que utilizam estas palavras-chave especiais:

Características do Dispositivo
Uma entrada do DeviceCharacteristicsHKR AddReg especifica características do dispositivo. O valor de características é um valor numérico que resulta do uso de OR em um ou mais valores de características de ficheiro FILE_*, que são definidos em Wdm.h e Ntddk.h.

Apenas os seguintes valores podem ser especificados num 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 uma descrição destes valores, veja IoCreateDevice.

Os valores de características, que são especificados através de uma entrada DeviceFeatures , são OR com os especificados em cada chamada ao IoCreateDevice que cria um objeto de dispositivo na pilha de dispositivos. A operação de OR ocorre depois de todos os objetos do dispositivo serem adicionados, mas antes de o dispositivo ser iniciado.

O valor de características (incluindo um valor de zero) sobrepõe-se a quaisquer características de dispositivo a nível de classe especificadas no instalador de classe associado, INF.

Para mais informações sobre características do dispositivo, consulte Especificar Características do Dispositivo.

DeviceType
Uma entrada do DeviceTypeHKR AddReg especifica um tipo de dispositivo para o dispositivo. O tipo de dispositivo é o valor numérico de uma constante FILE_DEVICE_XXX definida em Wdm.h ou Ntddk.h. O valor flag de 0x10001 especifica que o valor do tipo de dispositivo é um REG_DWORD. Para mais informações, consulte Especificar Tipos de Dispositivos.

Um INF instalador de classe deve especificar o tipo de dispositivo que se aplica a todos, ou quase todos, os dispositivos da classe. Por exemplo, se os dispositivos da classe forem do tipo FILE_DEVICE_CD_ROM, especifique um tipo de dispositivo de 0x02. Se um INF de dispositivo especificar um valor para o DeviceType, sobrepõe-se ao valor definido pelo instalador da classe, caso exista. Se a classe ou dispositivo INF especificar um valor DeviceType , o gestor PnP aplica esse tipo ao objeto físico do dispositivo (PDO) criado pelo controlador do barramento do dispositivo.

Security
Uma entrada Security HKR AddReg especifica um descritor de segurança para o dispositivo. A cadeia de descrição de segurança é uma cadeia com tokens para indicar o componente de segurança DACL (D:).

Um instalador de classe INF pode especificar um descritor de segurança para uma classe de dispositivo. Um INF de dispositivo pode especificar um descritor de segurança para um dispositivo individual, sobrepondo-se à segurança da classe. Se a classe e/ou dispositivo INF especificar uma cadeia de descritores de segurança, o gestor PnP propaga o descritor para todos os objetos do dispositivo ( DOs) de um dispositivo. Isto inclui o objeto de dispositivo de função (FDO), DOs de filtro opcionais e o PDO.

Para informações sobre o formato das cadeias de descritores de segurança, consulte a documentação do SDK Microsoft Windows.

Para mais informações sobre como especificar descritores de segurança, consulte Criação de Instalações Seguras de Dispositivos.

UpperFilters
Uma entrada UpperFiltersHKR AddReg especifica um driver PnP de filtro superior. Esta entrada numa secção DDInstall. HW define um ou mais drivers de filtro superior específicos de cada dispositivo. Numa secção ClassInstall32 , esta entrada define um ou mais drivers de filtro superior de nível de classe.

LowerFilters
Uma entrada do LowerFiltersHKR AddReg especifica um driver PnP com filtro inferior. Esta entrada numa secção DDInstall. HW define um ou mais drivers específicos de dispositivo com filtro inferior. Numa secção do ClassInstall32 , esta entrada define um ou mais drivers de filtro inferior em toda a classe.

Exclusivo
Uma entrada ExclusiveHKR AddReg , se existir e estiver definida como "1", especifica que o dispositivo é um dispositivo exclusivo. Caso contrário, o dispositivo não é tratado como exclusivo. Para mais informações, consulte Especificar Acesso Exclusivo a Objetos de Dispositivo.

EnumPropPages32
Uma entrada EnumPropPages32HKR AddReg especifica o nome de um ficheiro de biblioteca de ligação dinâmica (DLL) que é um fornecedor de página de propriedades específico de cada dispositivo. Também especifica o nome da função de callback ExtensionPropSheetPageProc conforme implementada pela DLL. Para mais informações sobre páginas de propriedades e funções, consulte o Microsoft Windows Software Development Kit (SDK) para Windows 7 e .NET Framework 4.0.

Important

Tanto o nome da DLL como a função de callback ExtensionPropSheetPageProc devem estar incluídos entre aspas (" ").

LocalizaçãoInformaçãoSobrescrever
(Windows XP e versões posteriores do Windows) Uma entrada LocationInformationOverrideHKR AddReg pode ser usada para especificar uma cadeia de texto que descreve a localização física de um dispositivo. Sobrepõe a cadeia LocationInformation que o driver do bus do dispositivo fornece em resposta a um pedido IRP_MN_QUERY_DEVICE_TEXT .

ResourcePickerTags
Uma entrada ResourcePickerTags HKR AddReg especifica etiquetas de seletor de recursos para um dispositivo.

ResourcePickerExceptions
Uma entrada ResourcePickerExceptionsHKR AddReg especifica os conflitos de recursos permitidos para um dispositivo.

Examples

Uma diretiva do AddReg referia-se à secção de Miniport_EventLog_AddReg (SCSI) neste exemplo, sob uma secção definida pelo autor do INF referenciada pela diretiva do AddService num DDInstall. Secção de serviços deste 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 

Note que pode especificar valores de bandeira em formato hexadecimal, como mostrado no exemplo, ou pode definir marcadores de cadeia, como %FLG_ADDREG_TYPE_DWORD% na secção [Strings] de cada ficheiro INF.

Ver também

AddInterface

AddService

BitReg

ClassInstall32

DDInstall

DDInstall. CoInstaladores

DDInstall. HW

DDInstall. Interfaces

DDInstall. Serviços

DelReg

InterfaceInstall32

Cordas