INF AddReg-Direktive

Eine AddReg-Direktive verweist auf einen oder mehrere inF-writer-defined _add-registry-sections*, die zum Ändern oder Erstellen von Registrierungsinformationen verwendet werden.

[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] ...

Jeder add-registry-section kann Einträge wie folgt enthalten:

  • Fügen Sie der Registrierung neue Schlüssel hinzu, möglicherweise mit Anfangswerteinträgen.

  • Fügen Sie vorhandenen Registrierungsschlüsseln neue Werteinträge hinzu.

  • Ändern Sie vorhandene Werteinträge bestimmter Schlüssel in der Registrierung.

Jeder benannte add-registry-section , auf den eine AddReg-Direktive verweist, hat das folgende Format:

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

Ein add-registry-section kann eine beliebige Anzahl von Einträgen in einer separaten Zeile enthalten. Ein INF kann auch einen oder mehrere optionale add-registry-section.security-Abschnitte enthalten, die jeweils einen Sicherheitsdeskriptor angeben, der auf alle Registrierungswerte angewendet wird, die in einem benannten add-registry-section beschrieben werden.

Einträge

reg-root
Gibt den Stamm der Registrierungsstruktur für andere Werte an, die in diesem Eintrag angegeben werden. Der Wert kann in folgenden Formen vorliegen:

HKCR
Abkürzung für HKEY_CLASSES_ROOT

HKCU
Abkürzung für HKEY_CURRENT_USER

HKLM
Abkürzung für HKEY_LOCAL_MACHINE

HKU
Abkürzung für HKEY_USERS

HKR
Relativer Stamm, in dem schlüssel, die mithilfe dieser Abkürzung angegeben werden, relativ zum Registrierungsschlüssel sind, der dem INF-Abschnitt zugeordnet ist, in dem diese AddReg-Direktive angezeigt wird, wie in der folgenden Tabelle angegeben.

INF-Abschnitt, der die AddReg-Direktive enthält Registrierungsschlüssel, auf den von HKR verwiesen wird
Abschnitt INF DDInstall Der Softwareschlüssel des Geräts
INF DDInstall. Abschnitt HW Hardwareschlüssel des Geräts
ABSCHNITT "INF [service-install-section] Der Dienstschlüssel
ABSCHNITT "INF [event-log-install] Der EventLog-Schlüssel
ABSCHNITT "INF [add-interface-section] Registrierungsschlüssel der Geräteschnittstelle

Hinweis

HKR kann nicht in einem Add-Registry-Abschnitt verwendet werden, auf den aus einem INF DefaultInstall-Abschnitt verwiesen wird.

Weitere Informationen zu Treiberinformationen, die unter dem HKEY_LOCAL_MACHINE-Stamm gespeichert werden, finden Sie unter Registrierungsstrukturen und Schlüssel für Geräte und Treiber.

Unterschlüssel
Dieser optionale Wert, der entweder als %strkey%-Token gebildet wird, das in einem Strings-Abschnitt des INF definiert ist, oder als Registrierungspfad unter dem angegebenen reg-root (key1\key2\key3...)), gibt eine der folgenden Werte an:

  • Ein neuer Unterschlüssel, der der Registrierung am Ende des angegebenen Registrierungspfads hinzugefügt werden soll.
  • Ein vorhandener Unterschlüssel, in den die zusätzlichen Werte geschrieben werden, die in diesem Eintrag angegeben sind (möglicherweise durch Ersetzen des Werts eines vorhandenen benannten Werteintrags des angegebenen Unterschlüssels).
  • Sowohl ein neuer Unterschlüssel, der der Registrierung zusammen mit dem Anfangswerteintrag hinzugefügt werden soll.

Werteintragsname
Dieser optionale Wert benennt entweder einen vorhandenen Werteintrag im angegebenen (vorhandenen) Unterschlüssel oder erstellt den Namen eines neuen Werteintrags, der im angegebenen Unterschlüssel hinzugefügt werden soll, unabhängig davon, ob er bereits vorhanden ist oder ein neuer Schlüssel ist, der der Registrierung hinzugefügt werden soll. Dieser Wert kann entweder als "Anführungszeichenzeichenfolge" oder als %strkey%-Token ausgedrückt werden, das im Abschnitt Strings des INF definiert ist. (Wenn dies für einen Zeichenfolgentypwert nicht angegeben wird, ist der Wert-Eintragsname der Standardwerteintrag "unbenannt" für diesen Schlüssel.)

Das Betriebssystem unterstützt einige systemdefinierte Schlüsselwörter für spezielle Werteintragsnamen . Weitere Informationen finden Sie am Ende dieses Abschnitts mit den Anmerkungen .

flags
Dieser optionale Hexadezimalwert, der als ORed-Bitmaske von systemdefinierten Werten für niedrige Wörter und hohe Wörter ausgedrückt wird, definiert den Datentyp für einen Werteintrag und/oder steuert den Add-Registry-Vorgang.

Bitmaskenwerte für jedes dieser Flags sind wie folgt:

0x00000001 (FLG_ADDREG_BINVALUETYPE)
Der angegebene Wert ist "Rohdaten". (Dieser Wert ist identisch mit dem FLG_ADDREG_TYPE_BINARY.)

0x00000002 (FLG_ADDREG_NOCLOBBER)
Verhindern, dass ein bestimmter Wert den Wert eines vorhandenen Werteintrags ersetzt.

0x00000004 (FLG_ADDREG_DELVAL)
Löschen Sie den angegebenen Unterschlüssel aus der Registrierung, oder löschen Sie den angegebenen wert-entry-name aus dem angegebenen Registrierungsunterschlüssel.

0x00000008 (FLG_ADDREG_APPEND)
Fügen Sie einen angegebenen Wert an den eines vorhandenen Benannten Werteintrags an. Dieses Flag ist nur gültig, wenn auch FLG_ADDREG_TYPE_MULTI_SZ festgelegt ist. Der angegebene Zeichenfolgenwert wird nicht angefügt, wenn er bereits vorhanden ist.

0x00000010 (FLG_ADDREG_KEYONLY)
Erstellen Sie den angegebenen Unterschlüssel, ignorieren Sie jedoch alle angegebenen Werte und/oder Werte.

0x00000020 (FLG_ADDREG_OVERWRITEONLY)
Setzen Sie nur dann auf den angegebenen Wert zurück, wenn der angegebene Wert-Eintragsname bereits im angegebenen Unterschlüssel vorhanden ist.

0x00001000 (FLG_ADDREG_64BITKEY)
(Windows XP und höhere Versionen von Windows.) Nehmen Sie die angegebene Änderung in der 64-Bit-Registrierung vor. Falls nicht angegeben, wird die Änderung an der nativen Registrierung vorgenommen.

0x00002000 (FLG_ADDREG_KEYONLY_COMMON)
(Windows XP und höhere Versionen von Windows.) Dies ist identisch mit FLG_ADDREG_KEYONLY funktioniert aber auch in einem del-registry-Abschnitt einer INF DelReg-Direktive.

0x00004000 (FLG_ADDREG_32BITKEY)
(Windows XP und höhere Versionen von Windows.) Nehmen Sie die angegebene Änderung in der 32-Bit-Registrierung vor. Falls nicht angegeben, wird die Änderung an der nativen Registrierung vorgenommen.

0x00000000 (FLG_ADDREG_TYPE_SZ)
Der angegebene Werteintrag und/oder Wert ist vom Typ REG_SZ.

Hinweis

Dieser Wert ist der Standardtyp für einen angegebenen Werteintrag, sodass der Flags-Wert von jeder reg-root=- Zeile in einem add-registry-section ausgelassen werden kann, der mit einem Werteintrag dieses Typs arbeitet.

0x00010000 (FLG_ADDREG_TYPE_MULTI_SZ)
Der angegebene Werteintrag und/oder Wert ist vom Registrierungstyp REG_MULTI_SZ. Das folgende Wertfeld kann eine Liste von Zeichenfolgen sein, die durch Kommas getrennt sind. Für diese Spezifikation ist kein NULL-Abschlussator für einen bestimmten Zeichenfolgenwert erforderlich.

0x00020000 (FLG_ADDREG_TYPE_EXPAND_SZ)
Der angegebene Wert-Eintragsname und/oder Wert ist vom Registrierungstyp REG_EXPAND_SZ.

0x00010001 (FLG_ADDREG_TYPE_DWORD)
Der angegebene Wert-Eintragsname und/oder Wert ist vom Registrierungstyp REG_DWORD.

0x00020001 (FLG_ADDREG_TYPE_NONE)
Der angegebene Wert-Eintragsname und/oder Wert ist vom Registrierungstyp REG_NONE.

value
Dies gibt optional einen neuen Wert für den angegebenen Wert-Eintragsnamen an, der dem angegebenen Registrierungsschlüssel hinzugefügt werden soll. Ein solcher Wert kann ein "Ersetzungswert" für einen vorhandenen benannten Werteintrag in einem vorhandenen Schlüssel, ein Wert sein, der an einen vorhandenen REG_MULTI_SZ-Type-Werteintrag in einem vorhandenen Schlüssel 0x00010008 angefügt werden soll, ein neuer Werteintrag, der in einen vorhandenen Schlüssel geschrieben werden soll, oder der Anfangswerteintrag für einen neuen Unterschlüssel, der der Registrierung hinzugefügt werden soll.

Der Ausdruck eines solchen Werts hängt wie folgt vom Registrierungstyp ab, der für das Flag angegeben ist:

  • Ein Registrierungszeichenfolgentypwert kann entweder als "Anführungszeichenzeichenfolge" oder als %strkey%-Token ausgedrückt werden, das in einem Strings-Abschnitt der INF-Datei definiert ist. Ein solcher INF-angegebene Wert muss keinen NULL-Abschlussator am Ende jeder Zeichenfolge enthalten.

  • Ein numerischer Registrierungstypwert kann als Hexadezimalwert (mithilfe der 0x-Notation) oder als Dezimalzahl ausgedrückt werden.

security-descriptor-string
Gibt einen Sicherheitsdeskriptor an, der auf alle Registrierungseinträge angewendet werden soll, die vom benannten add-registry-section erstellt werden. Die security-descriptor-string ist eine Zeichenfolge mit Token, die die DACL-Sicherheitskomponente (D:) angeben.

Wenn kein Abschnitt add-registry-section.security angegeben wird, erben Registrierungseinträge die Sicherheitseinstellungen des übergeordneten Schlüssels.

Wenn ein Add-registry-section.security-Abschnitt angegeben wird, müssen die folgenden ACE's enthalten sein, damit Installationen und Upgrades von Geräten und System-Service Packs durchgeführt werden können:

  • (A;; GA;;; SY) − Gewährt allen Zugriff auf das lokale System.
  • (A;; GA;;; BA) – Gewährt integrierten Administratoren jeglichen Zugriff.

Geben Sie keine ACE-Zeichenfolgen an, die nicht privilegierten Benutzern Schreibzugriff gewähren.

Informationen zu Sicherheitsdeskriptorzeichenfolgen finden Sie unter Security Descriptor Definition Language (Windows). Informationen zum Format von Sicherheitsdeskriptorzeichenfolgen finden Sie unter Security Descriptor Definition Language (Windows).

Weitere Informationen zum Angeben von Sicherheitsbeschreibungen finden Sie unter Erstellen sicherer Geräteinstallationen.

Hinweise

Eine AddReg-Direktive kann in jedem der Abschnitte angegeben werden, die in der formalen Syntax-Anweisung oben gezeigt werden. Diese Direktive kann auch in einem der folgenden inF-Writer-definierten Abschnitte angegeben werden:

Jeder Add-Registry-Section-Name muss für die INF-Datei eindeutig sein, kann jedoch von AddReg-Anweisungen in anderen Abschnitten desselben INF darauf verwiesen werden. Jeder Abschnittsname muss den allgemeinen Regeln zum Definieren von Abschnittsnamen entsprechen, die unter Allgemeine Syntaxregeln für INF-Dateien beschrieben sind.

Hinweis

Das Bit der unteren Reihenfolge des worttiefen Worts in einem Flagwert unterscheidet zwischen Zeichen- und Binärdaten.

Um eine andere Anzahl eines anderen Registrierungstyps als einen der vordefinierten REG_XXX-Typen darzustellen, geben Sie eine neue Typnummer im hohen Wort des Flags ORed mit FLG_ADDREG_BINVALUETYPE im niedrigen Wort an.

Die Daten für einen solchen Wert müssen im Binärformat als durch Kommas getrennte Bytesequenz angegeben werden. Wenn Sie beispielsweise 16 Bytes Daten eines neuen Registrierungsdatentyps wie 0x38 als Werteintrag speichern möchten, würde der Abschnittseintrag add-registry ungefähr wie folgt aussehen:

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

Dieses Verfahren kann verwendet werden, um neue Registrierungstypen für numerische Werte zu definieren, aber nicht für Werte vom Typ REG_EXPAND_SZ, REG_MULTI_SZ, REG_NONE oder REG_SZ. Weitere Informationen zu diesen Typen finden Sie unter Registrierungswerttypen.

Spezielle Wert-Eintragsname-Schlüsselwörter

Spezielle Schlüsselwörter werden für die Verwendung in den HKR AddReg-Einträgen definiert. Das Format für die Einträge, die diese Schlüsselwörter verwenden, ist wie folgt:

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

Im Folgenden werden die HKR AddReg-Einträge beschrieben, die diese speziellen Schlüsselwörter verwenden:

DeviceCharacteristics
Ein DeviceCharacteristics HKR AddReg-Eintrag gibt Merkmale für das Gerät an. Der Merkmalswert ist ein numerischer Wert, der das Ergebnis der Verwendung von OR für einen oder mehrere FILE_*-Dateimerkmalewerte ist, die in Wdm.h und Ntddk.h definiert sind.

In einem INF können nur die folgenden Werte angegeben werden:

#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

Eine Beschreibung dieser Werte finden Sie unter IoCreateDevice.

Die Eigenschaftenwerte, die mithilfe eines DeviceCharacteristics-Eintrags angegeben werden, sind ORed mit denen, die in jedem Aufruf von IoCreateDevice angegeben sind, der ein Geräteobjekt auf dem Gerätestapel erstellt. Der OR-Vorgang erfolgt, nachdem alle Geräteobjekte hinzugefügt wurden, aber bevor das Gerät gestartet wird.

Der Merkmalswert (einschließlich eines Werts von null) überschreibt alle klassenweiten Gerätemerkmale, die im zugeordneten Klasseninstallationsprogramm INF angegeben wurden.

Weitere Informationen zu Gerätemerkmalen finden Sie unter Angeben von Gerätemerkmalen.

DeviceType
Ein DeviceType HKR AddReg-Eintrag gibt einen Gerätetyp für das Gerät an. Der Gerätetyp ist der numerische Wert einer FILE_DEVICE_XXX-Konstante , die in Wdm.h oder Ntddk.h definiert ist. Der Flagwert von 0x10001 gibt an, dass der Gerätetypwert ein REG_DWORD ist. Weitere Informationen finden Sie unter Angeben von Gerätetypen.

Ein Klasseninstallationsprogramm-INF sollte den Gerätetyp angeben, der für alle oder fast alle Geräte in der Klasse gilt. Wenn die Geräte in der Klasse beispielsweise vom Typ FILE_DEVICE_CD_ROM sind, geben Sie einen Gerätetyp von 0x02 an. Wenn ein Geräte-INF einen Wert für DeviceType angibt, wird der vom Klasseninstallationsprogramm festgelegte Wert (sofern vorhanden) außer Kraft gesetzt. Wenn die Klasse oder der Geräte-INF einen DeviceType-Wert angibt, wendet der PnP-Manager diesen Typ auf das vom Bustreiber des Geräts erstellte physische Geräteobjekt (PDO) an.

Security
Ein Security HKR AddReg-Eintrag gibt eine Sicherheitsbeschreibung für das Gerät an. Die security-descriptor-string ist eine Zeichenfolge mit Token, die die DACL-Sicherheitskomponente (D:) angeben.

Ein Klasseninstallationsprogramm-INF kann einen Sicherheitsdeskriptor für eine Geräteklasse angeben. Ein Geräte-INF kann einen Sicherheitsdeskriptor für ein einzelnes Gerät angeben und die Sicherheit für die -Klasse überschreiben. Wenn die Klasse und/oder Geräte-INF eine Sicherheitsdeskriptorzeichenfolge angibt, verteilt der PnP-Manager den Deskriptor an alle Geräteobjekte ( DOs) für ein Gerät. Dies umfasst das Funktionsgeräteobjekt (Function Device Object, FDO), optionale Filter-DOs und die PDO.

Informationen zum Format von Sicherheitsdeskriptorzeichenfolgen finden Sie in der Microsoft Windows SDK Dokumentation.

Weitere Informationen zum Angeben von Sicherheitsbeschreibungen finden Sie unter Erstellen sicherer Geräteinstallationen.

UpperFilters
Ein UpperFilters HKR AddReg-Eintrag gibt einen PnP-Treiber für den oberen Filter an. Dieser Eintrag in einem DDInstall. Der Abschnitt HW definiert einen oder mehrere gerätespezifische Treiber für den oberen Filter. In einem ClassInstall32-Abschnitt definiert dieser Eintrag mindestens einen klassenweiten Oberfiltertreiber.

LowerFilters
Ein LowerFilters HKR AddReg-Eintrag gibt einen PnP-Treiber mit niedrigerem Filter an. Dieser Eintrag in einem DDInstall. Der Abschnitt HW definiert einen oder mehrere gerätespezifische Treiber mit niedrigeren Filtern. In einem ClassInstall32-Abschnitt definiert dieser Eintrag einen oder mehrere klassenweite Treiber mit niedrigerem Filter.

Exklusiv
Ein Exclusive HKR AddReg-Eintrag gibt an, wenn er vorhanden ist und auf "1" festgelegt ist, dass es sich bei dem Gerät um ein exklusives Gerät handelt. Andernfalls wird das Gerät nicht als exklusiv behandelt. Weitere Informationen finden Sie unter Angeben des exklusiven Zugriffs auf Geräteobjekte.

EnumPropPages32
Ein EnumPropPages32 HKR AddReg-Eintrag gibt den Namen einer DLL-Datei (Dynamic Link Library) an, bei der es sich um einen gerätespezifischen Eigenschaftenseitenanbieter handelt. Außerdem wird der Name der Callbackfunktion ExtensionPropSheetPageProc angegeben, die von der DLL implementiert wird. Weitere Informationen zu Eigenschaftenseiten und Funktionen finden Sie im Microsoft Windows Software Development Kit (SDK) für Windows 7 und .NET Framework 4.0.

Wichtig

Sowohl der Name der DLL als auch die ExtensionPropSheetPageProc-Rückruffunktion müssen in Anführungszeichen ("") eingeschlossen werden.

LocationInformationOverride
(Windows XP und höhere Versionen von Windows) Ein LocationInformationOverride HKR AddReg-Eintrag kann verwendet werden, um eine Textzeichenfolge anzugeben, die den physischen Standort eines Geräts beschreibt. Es überschreibt die LocationInformation-Zeichenfolge , die der Bustreiber des Geräts als Reaktion auf eine IRP_MN_QUERY_DEVICE_TEXT-Anforderung bereitstellt.

ResourcePickerTags
Ein ResourcePickerTags HKR AddReg-Eintrag gibt Ressourcenauswahltags für ein Gerät an.

ResourcePickerExceptions
Ein ResourcePickerExceptions HKR AddReg-Eintrag gibt die Ressourcenkonflikte an, die für ein Gerät zulässig sind.

Beispiele

Eine AddReg-Direktive verweist in diesem Beispiel auf den (SCSI)-Miniport_EventLog_AddReg Abschnitt unter einem inF-Writer definierten Abschnitt, auf den die AddService-Direktive in einem DDInstall verweist. Der Abschnitt "Dienste" dieses 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 

Beachten Sie, dass Sie entweder Flagwerte im hexadezimalen Format angeben können, wie im Beispiel gezeigt, oder Sie können Zeichenfolgenplatzhalter %FLG_ADDREG_TYPE_DWORD% wie im Abschnitt [Zeichenfolgen] jeder INF-Datei definieren.

Weitere Informationen

AddInterface

AddService

BitReg

ClassInstall32

DDInstall

DDInstall. CoInstallers

DDInstall. HW

DDInstall. Schnittstellen

DDInstall. Dienstleistungen

DelReg

InterfaceInstall32

Zeichenfolgen