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 セクション には、次の操作を行うエントリを含めることができます。

  • 新しいキー (場合によっては初期値エントリを含む) をレジストリに追加します。

  • 既存のレジストリ キーに新しい値エントリを追加します。

  • レジストリ内の特定のキーの既存の値エントリを変更します。

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] セクション デバイス インターフェイスのレジストリ キー

注意

HKR は、INF DefaultInstall セクションから参照される add-registry セクションでは使用できません。

HKEY_LOCAL_MACHINE ルートに格納されているドライバー情報の詳細については、「デバイスとドライバーのレジストリ ツリーとキー」を参照してください。

subkey
この省略可能な値は、INF の Strings セクションで定義された %strkey% トークンとして、または指定された reg ルート (key1\key2\key3...) の下のレジストリ パスとして、次のいずれかを指定します。

  • 指定されたレジストリ パスの末尾にあるレジストリに追加する新しいサブキー。
  • このエントリで指定された追加の値が書き込まれる既存のサブキー (指定されたサブキーの既存の名前付き値エントリの値を置き換える可能性があります)。
  • レジストリに追加する新しいサブキーと、その初期値エントリの両方。

value-entry-name
この省略可能な値は、指定された (既存の) サブキー 内の既存の値エントリに名前を付けるか、指定した サブキーに追加する新しい値エントリの名前を作成します(既に存在するか、レジストリに追加する新しいキーであるかに関係なく)。 この値は、"引用符で囲まれた文字列" または INF の文字列セクションで定義されている %strkey% トークンとして表すことができます。 (文字列型の値に対してこれを省略した場合、 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型です。

注意

この値は、指定された値エントリの既定の型であるため、この型の値エントリを操作する add-registry セクション任意の reg-root= 行からフラグ値を省略できます。

0x00010000 (FLG_ADDREG_TYPE_MULTI_SZ)
指定された値のエントリまたは値は、レジストリの種類 REG_MULTI_SZです。 次の値フィールドには、コンマで区切られた文字列の一覧を指定できます。 この仕様では、指定された文字列値に NULL ターミネータは必要ありません。

0x00020000 (FLG_ADDREG_TYPE_EXPAND_SZ)
指定された 値エントリ名 または は、レジストリの種類 REG_EXPAND_SZです。

0x00010001 (FLG_ADDREG_TYPE_DWORD)
指定された 値エントリ名 または は、レジストリの種類 REG_DWORDです。

0x00020001 (FLG_ADDREG_TYPE_NONE)
指定された 値エントリ名 または は、レジストリの種類 のREG_NONEです。

value
必要に応じて、指定されたレジストリ キーに追加する 指定した value-entry-name の新しい値を指定します。 このようなには、既存のキー内の既存の名前付き値エントリの "置換" 値、既存のキーの既存の名前付きREG_MULTI_SZ型の値エントリに追加する値 (フラグ0x00010008)、既存のキーに書き込む新しい値エントリ、またはレジストリに追加する新しいサブキーの初期値エントリを指定できます。

このような の式は、次のように フラグに指定されたレジストリの種類によって異なります。

  • レジストリ文字列型の値は、"引用符で囲まれた文字列" または INF ファイルの Strings セクションで定義されている %strkey% トークンとして表すことができます。 このような INF で指定された値には、各文字列の末尾に NULL ターミネータを含める必要はありません。

  • レジストリの数値型の値は、16 進数 (0x 表記を使用) または 10 進数で表すことができます。

security-descriptor-string
名前付き add-registry セクションによって作成されたすべてのレジストリ エントリに適用されるセキュリティ記述子を指定します。 security-descriptor-string は、DACL (D:) セキュリティ コンポーネントを示すトークンを含む文字列です。

add-registry-section.security セクションが指定されていない場合、レジストリ エントリは親キーのセキュリティ設定を継承します。

add-registry-section.security セクションが指定されている場合は、デバイスとシステム サービス パックのインストールとアップグレードを実行できるように、次の ACE を含める必要があります。

  • (A;;GA;;;SY) - ローカル システムへのすべてのアクセスを許可します。
  • (A;;GA;;;BA) - 組み込み管理者へのすべてのアクセスを許可します。

特権 のない ユーザーに書き込みアクセス権を付与する ACE 文字列は指定しないでください。

セキュリティ記述子文字列の詳細については、「セキュリティ記述子定義言語 (Windows)」を参照してください。 セキュリティ記述子文字列の形式については、「セキュリティ記述子定義言語 (Windows)」を参照してください。

セキュリティ記述子を指定する方法の詳細については、「 Secure Device Installations の作成」を参照してください。

注釈

AddReg ディレクティブは、上記の正式な構文ステートメントに示されている任意のセクションで指定できます。 このディレクティブは、次の INF ライター定義のセクションで指定することもできます。

add-registry-section 名は INF ファイルに対して一意である必要がありますが、同じ INF の他のセクションの AddReg ディレクティブによって参照できます。 各セクション名は、INF ファイルの一般的な構文規則で説明されているセクション名を定義 するための一般的な規則に従う必要があります。

注意

フラグ値の下位ワードの下位ビットは、文字データとバイナリ データを区別します。

定義済みのREG_XXX 型以外のレジストリ型の数を表すには、 フラグ 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_SZREG_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 エントリは、デバイスのデバイスの種類を指定します。 デバイスの種類は、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 つ以上のクラス全体の下位フィルター ドライバーを定義します。

[排他]
排他 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 ディレクティブは、DDInstallAddService ディレクティブによって参照される 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 ファイルの [文字列] セクションなどの %FLG_ADDREG_TYPE_DWORD% 文字列プレースホルダーを定義することもできます。

こちらもご覧ください

AddInterface

AddService

BitReg

ClassInstall32

DDInstall

DDInstall。CoInstallers

DDInstall。ハードウェア

DDInstall。インターフェイス

DDInstall。サービス

DelReg

InterfaceInstall32

文字列