INF AddReg ディレクティブ
AddReg ディレクティブは、レジストリ情報の変更または作成に使用される 1 つ以上の INF ライター定義の_add-registry-sections* を参照します。
[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] ...
各 add-registry-section には、次の操作を行うためのエントリを含めることができます。
新しいキー (場合によっては初期値エントリを含む) をレジストリに追加します。
既存のレジストリ キーに新しい値エントリを追加します。
レジストリ内の特定のキーの既存の値エントリを変更します。
AddReg ディレクティブによって参照される各名前付き add-registry-section の形式は次のとおりです。
[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"]
add-registry-section には、それぞれ個別の行に任意の数のエントリを含めることができます。 INF には、1 つ以上の省略可能な add-registry-section.security セクションを含めることもできます。それぞれが、名前付き add-registry-section 内で記述されているすべてのレジストリ値に適用されるセキュリティ記述子を指定します。
エントリ
reg-root
このエントリで指定された他の値のレジストリ ツリーのルートを識別します。 値は次のいずれかになります。
HKCR
HKEY_CLASSES_ROOTの省略形
HKCU
HKEY_CURRENT_USERの省略形
HKLM
HKEY_LOCAL_MACHINEの省略形
HKU
HKEY_USERSの省略形
Hkr
次の表に示すように、この省略形を使用して指定されたキーが、この AddReg ディレクティブが表示される INF セクションに関連付けられているレジストリ キーを基準とする相対ルート。
AddReg ディレクティブを含む INF セクション | HKR によって参照されるレジストリ キー |
---|---|
INF DDInstall セクション | デバイスの ソフトウェア キー |
INF DDInstall。HW セクション | デバイスの ハードウェア キー |
INF [service-install-section] セクション | サービス キー |
INF [event-log-install] セクション | EventLog キー |
INF [add-interface-section] セクション | デバイス インターフェイスのレジストリ キー |
Note
HKR は、INF DefaultInstall セクションから参照される add-registry セクションでは使用できません。
HKEY_LOCAL_MACHINE ルートに格納されているドライバー情報の詳細については、「デバイスとドライバーのレジストリ ツリーとキー」を参照してください。
subkey
この省略可能な値は、INF の Strings セクションで定義されている %strkey% トークンとして、または指定された reg-root (key1\key2\key3....) の下のレジストリ パスとして形成され、次のいずれかを指定します。
- 指定されたレジストリ パスの末尾にあるレジストリに追加する新しいサブキー。
- このエントリで指定された追加の値が書き込まれる既存のサブキー (指定されたサブキーの既存の名前付き値エントリの値を置き換える可能性があります)。
- レジストリに追加する新しいサブキーと、その初期値エントリの両方。
value-entry-name
この省略可能な値は、指定された (既存の) サブキー に既存の値エントリの名前を付けるか、指定した サブキーに追加する新しい値エントリの名前を作成します(既に存在するか、レジストリに追加する新しいキーであるかに関係なく)。 この値は、"引用符で囲まれた文字列" または INF の [文字列] セクションで定義されている %strkey% トークンとして表すことができます。 (文字列型の値に対してこれを省略した場合、 value-entry-name は、このキーの既定の "名前なし" 値エントリになります)。
オペレーティング システムでは、システム定義の特殊な value-entry-name キーワードがいくつかサポートされています。 詳細については、この 「解説 」セクションの最後を参照してください。
flags
この省略可能な 16 進値は、システム定義の低ワードおよび高ワード フラグ値の ORed ビットマスクとして表され、値エントリのデータ型を定義したり、追加レジストリ操作を制御したりします。
これらの各フラグのビットマスク値は次のとおりです。
0x00000001 (FLG_ADDREG_BINVALUETYPE)
指定された値は "生" データです。 (この値は、FLG_ADDREG_TYPE_BINARYと同じです。
0x00000002 (FLG_ADDREG_NOCLOBBER)
指定された値が既存の値エントリの値を置き換えないようにします。
0x00000004 (FLG_ADDREG_DELVAL)
指定したサブキーをレジストリから削除するか、指定したレジストリ サブキーから指定した value-entry-name を削除します。
0x00000008 (FLG_ADDREG_APPEND)
指定された 値 を既存の名前付き値エントリの値に追加します。 このフラグは、FLG_ADDREG_TYPE_MULTI_SZも設定されている場合にのみ有効です。 指定した文字列値は、既に存在する場合は追加されません。
0x00000010 (FLG_ADDREG_KEYONLY)
指定された サブキーを作成しますが、指定された value-entry-name や value は無視します。
0x00000020 (FLG_ADDREG_OVERWRITEONLY)
指定した value-entry-name が指定されたサブキーに既に存在する場合にのみ、指定された値にリセットします。
0x00001000 (FLG_ADDREG_64BITKEY)
(Windows XP 以降のバージョンの Windows)。64 ビット レジストリで指定した変更を行います。 指定しない場合、変更はネイティブ レジストリに対して行われます。
0x00002000 (FLG_ADDREG_KEYONLY_COMMON)
(Windows XP 以降のバージョンの Windows)。これはFLG_ADDREG_KEYONLYと同じですが、INF DelReg ディレクティブの del-registry セクションでも機能します。
0x00004000 (FLG_ADDREG_32BITKEY)
(Windows XP 以降のバージョンの Windows)。32 ビット レジストリで指定した変更を行います。 指定しない場合、変更はネイティブ レジストリに対して行われます。
0x00000000 (FLG_ADDREG_TYPE_SZ)
指定された値のエントリまたは値は 、REG_SZ型です。
Note
この値は、指定された値エントリの既定の型であるため、この型の値エントリを操作する add-registry-section 内の任意の reg-root= 行からフラグ値を省略できます。
0x00010000 (FLG_ADDREG_TYPE_MULTI_SZ)
指定された値エントリまたは値は、 REG_MULTI_SZレジストリの種類です。 次の値フィールドには、コンマで区切られた文字列の一覧を指定できます。 この仕様では、指定された文字列値に NULL ターミネータは必要ありません。
0x00020000 (FLG_ADDREG_TYPE_EXPAND_SZ)
指定された value-entry-name または value は、レジストリの種類 REG_EXPAND_SZです。
0x00010001 (FLG_ADDREG_TYPE_DWORD)
指定された value-entry-name または value は、レジストリの種類 REG_DWORDです。
0x00020001 (FLG_ADDREG_TYPE_NONE)
指定された value-entry-name または value は、レジストリの種類 REG_NONEです。
value
これにより、指定したレジストリ キーに追加する、指定した value-entry-name の新しい値が必要に応じて指定されます。 このような値には、既存のキー内の既存の名前付き値エントリの "置換" 値、既存のキー内の既存の名前付きREG_MULTI_SZ型の値エントリに追加する値 (フラグ値0x00010008)、既存のキーに書き込む新しい値エントリ、またはレジストリに追加する新しいサブキーの初期値エントリを指定できます。
このような 値 の式は、 フラグに指定されたレジストリの種類によって異なります。次に示します。
レジストリ文字列型の値は、"引用符で囲まれた文字列" または INF ファイルの Strings セクションで定義されている %strkey% トークンとして表すことができます。 このような INF で指定された値は、各文字列の末尾に NULL ターミネータを含める必要はありません。
レジストリの数値型の値は、16 進数 (0x 表記を使用) または 10 進数で表すことができます。
security-descriptor-string
名前付き add-registry-section によって作成されたすべてのレジストリ エントリに適用されるセキュリティ記述子を指定します。 security-descriptor-string は、DACL (D:) セキュリティ コンポーネントを示すトークンを含む文字列です。
add-registry-section.security セクションが指定されていない場合、レジストリ エントリは親キーのセキュリティ設定を継承します。
add-registry-section.security セクションが指定されている場合は、デバイスとシステム サービス パックのインストールとアップグレードを実行できるように、次の ACE を含める必要があります。
- (A;;ジョージア 州;;;SY) - ローカル システムへのすべてのアクセスを許可します。
- (A;;ジョージア 州;;;BA) - 組み込みの管理者に対するすべてのアクセス権を付与します。
特権 のない ユーザーに書き込みアクセス権を付与する ACE 文字列は指定しないでください。
セキュリティ記述子文字列の詳細については、「 セキュリティ記述子定義言語 (Windows)」を参照してください。 セキュリティ記述子文字列の形式については、「セキュリティ記述子定義言語 (Windows)」を参照してください。
セキュリティ記述子を指定する方法の詳細については、「 Secure Device Installations の作成」を参照してください。
解説
AddReg ディレクティブは、上記の正式な構文ステートメントに示されているセクションのいずれかで指定できます。 このディレクティブは、次の INF ライター定義セクションのいずれかで指定することもできます。
INF DDInstall の AddService ディレクティブによって参照される service-install-section または event-log-install セクション。[サービス] セクション。
INF DDInstall の AddInterface ディレクティブによって参照される add-interface-section。[インターフェイス] セクション。
INF InterfaceInstall32 セクションで参照されるインストール インターフェイス セクション。
各 add-registry-section 名は INF ファイルに対して一意である必要がありますが、同じ INF の他のセクションの AddReg ディレクティブで参照できます。 各セクション名は、「INF ファイルの一般的な構文規則」で説明されているセクション名を定義 するための一般的な規則に従う必要があります。
Note
フラグ値の下位ワードの下位ビットは、文字データとバイナリ データを区別します。
定義済みの REG_XXX 型の 1 つ以外のレジストリ型の数を表すには、 フラグ ORed の上位ワードに新しい型番号を指定し、その下位ワードにFLG_ADDREG_BINVALUETYPEを指定します。
このような 値 のデータは、コンマで区切られたバイトシーケンスとしてバイナリ形式で指定する必要があります。 たとえば、0x38などの新しいレジストリ データ型の 16 バイトのデータを値エントリとして格納するには、add-registry セクション エントリは次のようになります。
HKR,,MYValue,0x00380001,1,0,2,3,4,5,6,7,8,9,A,B,C,D,E,F
この手法を使用して、数値の新しいレジストリ型を定義できますが、REG_EXPAND_SZ、REG_MULTI_SZ、REG_NONE、またはREG_SZ型の値には使用できません。 これらの型の詳細については、「 レジストリ値の型」を参照してください。
特殊 な value-entry-name キーワード
特別なキーワードは、HKR AddReg エントリで使用するために定義されます。 これらのキーワードを使用するエントリの形式は次のとおりです。
[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"] ,
次に、これらの特別なキーワードを使用する HKR AddReg エントリについて説明します。
DeviceCharacteristics
DeviceCharacteristics HKR AddReg エントリは、デバイスの特性を指定します。 特性値は、Wdm.h および Ntddk.h で定義されている 1 つ以上の FILE_* ファイルの特性値で OR を使用した結果である数値です。
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
これらの値の説明については、「 IoCreateDevice」を参照してください。
DeviceCharacteristics エントリを使用して指定される特性値は、デバイス スタックにデバイス オブジェクトを作成する IoCreateDevice の各呼び出しで指定された値を持つ ORed です。 OR 操作は、すべてのデバイス オブジェクトが追加された後、デバイスが開始される前に発生します。
特性値 (値 0 を含む) は、関連付けられたクラス インストーラー INF で指定されたクラス全体のデバイス特性をオーバーライドします。
デバイス特性の詳細については、「デバイス特性 の指定」を参照してください。
DeviceType
DeviceType HKR AddReg エントリは、デバイスのデバイスの種類を指定します。 device-type は、Wdm.h または Ntddk.h で定義されているFILE_DEVICE_XXX 定数の数値です。 0x10001 のフラグ値は、デバイスの種類の値が REG_DWORDであることを指定します。 詳細については、「 デバイスの種類の指定」を参照してください。
クラス インストーラー INF では、クラス内のデバイスのすべて (ほぼすべて) に適用されるデバイスの種類を指定する必要があります。 たとえば、クラス内のデバイスの種類が FILE_DEVICE_CD_ROM の場合は、 0x02のデバイスの種類 を指定します。 デバイス INF で DeviceType の値が指定されている場合は、クラス インストーラーによって設定された値 (存在する場合) がオーバーライドされます。 クラスまたはデバイス INF で DeviceType 値が指定されている場合、PnP マネージャーは、デバイスのバス ドライバーによって作成された 物理デバイス オブジェクト (PDO) にその型を適用します。
Security
Security HKR AddReg エントリは、デバイスのセキュリティ記述子を指定します。 security-descriptor-string は、DACL (D:) セキュリティ コンポーネントを示すトークンを含む文字列です。
クラス インストーラー INF では、デバイス クラスのセキュリティ記述子を指定できます。 デバイス INF では、クラスのセキュリティをオーバーライドして、個々のデバイスのセキュリティ記述子を指定できます。 クラスまたはデバイス INF で セキュリティ記述子文字列が指定されている場合、PnP マネージャーは、デバイスのすべてのデバイス オブジェクト ( DOs) に記述子を伝達します。 これには、関数デバイス オブジェクト (FDO)、オプション のフィルター DO、および PDO が含まれます。
セキュリティ記述子文字列の形式については、Microsoft Windows SDKドキュメントを参照してください。
セキュリティ記述子を指定する方法の詳細については、「 Secure Device Installations の作成」を参照してください。
UpperFilters
UpperFilters HKR AddReg エントリは、PnP の上位フィルター ドライバーを指定します。 DDInstall 内のこのエントリ。HW セクションでは、1 つ以上のデバイス固有の上位フィルター ドライバーを定義します。 ClassInstall32 セクションでは、このエントリは 1 つ以上のクラス全体の上位フィルター ドライバーを定義します。
LowerFilters
LowerFilters HKR AddReg エントリは、PnP 下位フィルター ドライバーを指定します。 DDInstall 内のこのエントリ。HW セクションでは、1 つ以上のデバイス固有の下位フィルター ドライバーを定義します。 ClassInstall32 セクションでは、このエントリによって 1 つ以上のクラス全体の下位フィルター ドライバーが定義されます。
[排他]
Exclusive HKR AddReg エントリが存在し、"1" に設定されている場合は、デバイスが排他的デバイスであることを指定します。 それ以外の場合、デバイスは排他的として扱われません。 詳細については、「 デバイス オブジェクトへの排他アクセスの指定」を参照してください。
EnumPropPages32
EnumPropPages32 HKR AddReg エントリは、デバイス固有のプロパティ ページ プロバイダーであるダイナミック リンク ライブラリ (DLL) ファイルの名前を指定します。 また、DLL によって実装される ExtensionPropSheetPageProc コールバック関数の名前も指定します。 プロパティ ページと関数の詳細については、「Windows 7 および .NET Framework 4.0 用 Microsoft Windows ソフトウェア開発キット (SDK)」を参照してください。
重要
DLL と ExtensionPropSheetPageProc コールバック関数の両方の名前を引用符 (" ") で囲む必要があります。
LocationInformationOverride
(Windows XP 以降のバージョンの Windows) LocationInformationOverride HKR AddReg エントリを使用して、デバイスの物理的な場所を記述するテキスト文字列を指定できます。 デバイスのバス ドライバーがIRP_MN_QUERY_DEVICE_TEXT要求に応答して提供する LocationInformation 文字列をオーバーライドします。
ResourcePickerTags
ResourcePickerTags HKR AddReg エントリは、デバイスのリソース ピッカー タグを指定します。
ResourcePickerExceptions
ResourcePickerExceptions HKR AddReg エントリは、デバイスで許可されるリソースの競合を指定します。
例
AddReg ディレクティブは、DDInstall の AddService ディレクティブによって参照される INF ライター定義セクションで、この例の (SCSI) Miniport_EventLog_AddReg セクションを参照しました。この 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
例に示すように、フラグ値を 16 進数形式で指定することも、各 INF ファイルの [Strings] セクションでなどの %FLG_ADDREG_TYPE_DWORD%
文字列プレースホルダーを定義することもできます。