INF AddReg 指示詞

AddReg 指示詞會參考一或多個 INF-writer-defined _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 也可以包含一或多個選擇性 add-registry-section.security 區段,每個區段都會指定套用至具名 add-registry-section 中所描述之所有登錄值的安全性描述項。

項目

reg-root
識別這個專案中提供之其他值的登錄樹狀目錄根目錄。 這個值可以是下列值之一:

HKCR
HKEY_CLASSES_ROOT的縮寫

HKCU
HKEY_CURRENT_USER的縮寫

HKLM
HKEY_LOCAL_MACHINE的縮寫

香港
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-section

如需儲存在HKEY_LOCAL_MACHINE根目錄下 驅動程式資訊的詳細資訊,請參閱 裝置和驅動程式的登錄樹狀架構和機碼

子機碼
這個選擇性值,格式為 INF 的 Strings 區段中定義的 %strkey% 令牌,或指定為指定之 reg-root (key1\key2 key3\...) 下的登錄路徑,指定下列其中一項:

  • 要加入至指定登錄路徑結尾處之登錄的新子機碼。
  • 寫入此專案中指定的其他值的現有子機碼 (可能取代指定子機碼之現有具名值專案的值) 。
  • 要新增至登錄的新子機碼及其初始值專案。

value-entry-name
這個選擇性值會命名指定 (現有) 子機碼 中的現有值專案,或建立要在指定 子機碼中加入之新值專案的名稱,不論它已經存在,還是要新增至登錄的新機碼。 這個值可以表示為引號字串或以 INF 的 Strings 區段中定義的 %strkey% 標記表示。 (如果針對字串類型值省略此專案, value-entry-name 是此機碼的預設「未命名」值專案。)

操作系統支援一些系統定義的特殊 值輸入名稱 關鍵詞。 See the end of this Remarks section for more information.

flags
這個選擇性的十六進位值,以系統定義的低字和高字旗標值的 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)
只有在指定的值項目名稱已存在於指定的子機碼中時,才重設為提供的值

0x00001000 (FLG_ADDREG_64BITKEY)
(Windows XP 和更新版本的 Windows.) 在 64 位登錄中進行指定的變更。 如果未指定,則會對原生登錄進行變更。

0x00002000 (FLG_ADDREG_KEYONLY_COMMON)
(Windows XP 和更新版本的 Windows.) 這與FLG_ADDREG_KEYONLY相同,但也適用於 INF DelReg 指示詞del-registry-section

0x00004000 (FLG_ADDREG_32BITKEY)
(Windows XP 和更新版本的 Windows.) 在 32 位登錄中進行指定的變更。 如果未指定,則會對原生登錄進行變更。

0x00000000 (FLG_ADDREG_TYPE_SZ)
指定的值專案和/或值的類型為 REG_SZ

注意

這個值是指定值項目的默認類型,因此旗標值可以從載入宏登錄區段中的任何 reg-root= 行中省略,該行會在此類型的值專案上運作。

0x00010000 (FLG_ADDREG_TYPE_MULTI_SZ)
指定的值專案和/或值是 登錄類型REG_MULTI_SZ。 後面的值欄位可以是以逗號分隔的字串清單。 此規格不需要指定字串值的任何NULL終止符。

0x00020000 (FLG_ADDREG_TYPE_EXPAND_SZ)
指定的 value-entry-name 和/or 登錄類型REG_EXPAND_SZ

0x00010001 (FLG_ADDREG_TYPE_DWORD)
指定的 value-entry-name 和/或 value登錄類型REG_DWORD

0x00020001 (FLG_ADDREG_TYPE_NONE)
指定的 value-entry-name 和/or 登錄類型REG_NONE

value
這會選擇性地指定要新增至指定登錄機碼之指定 value-entry-name 的新值。 這類 可以是現有機碼中現有具名值專案的「取代」值、要附加的值 ( 標值 0x00010008) 至現有索引鍵中現有的具名 REG_MULTI_SZ類型值專案、要寫入現有機碼的新值專案,或要新增至登錄的新 子機碼 的初始值專案。

這類 值的 表達式取決於為 旗標指定的登錄類型,如下所示:

  • 登錄字串類型值可以表示為“quoted string” 或 INF 檔案之 Strings 區段中定義的 %strkey% 標記。 這類 INF 指定的值不需要在每個字串結尾包含 NULL 終止符。

  • 登錄數值類型值可以使用 0x 表示法) 或十進位數,以十六進位 (表示。

security-descriptor-string
指定要套用至命名為 add-registry-section 所建立的所有登錄專案的安全性描述項。 security-descriptor-string 是具有標記的字串,用來指出 DACL (D:) 安全性元件。

如果未指定 add-registry-section.security 區段,登錄專案會繼承父機碼的安全性設定。

如果指定 add-registry-section.security 區段,則必須包含下列 ACE,才能安裝及升級裝置和系統 Service Pack:

  • (A;;Ga;;;SY) - 授與本機系統的所有存取權。
  • (A;;Ga;;;BA) — 授與內建系統管理員的所有存取權。

請勿指定授與非特殊許可權使用者的寫入許可權的 ACE 字串。

如需安全性描述項字串的相關信息,請參閱 安全性描述項定義語言 (Windows) 。 如需安全性描述元字串格式的詳細資訊,請參閱安全性描述元定義語言 (Windows) 。

如需如何指定安全描述元的詳細資訊,請參閱 建立安全裝置安裝

備註

您可以在上述正式語法語句所示的任何區段下指定 AddReg 指示詞。 您也可以在下列任何 INF 寫入器定義的區段下指定這個指示詞:

每個 add-registry-section 名稱都必須是唯一的 INF 檔案,但可由相同 INF 其他區段中的 AddReg 指示詞參考。 每個區段名稱都必須遵循定義 INF 檔案一般語法規則中所述之區段名稱的一般規則。

注意

旗標值中低字的低序位會區分字元和二進位數據。

若要代表其中一個預先定義REG_XXX 類型以外的登錄類型,請在低字FLG_ADDREG_BINVALUETYPE旗 標 ORed 的高字中指定新的類型編號。

這類 的數據必須以二進位格式指定為以逗號分隔的位元組序列。 例如,若要儲存新登錄數據類型的 16 個字節數據,例如0x38,做為值專案,add-registry 區段專案會如下所示:

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

這項技術可用來定義數值的新登錄類型,但不適用於類型 為 REG_EXPAND_SZREG_MULTI_SZREG_NONEREG_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 專案會指定裝置的特性。 特性值是數值,這是在一或多個FILE_* 檔案特性值上使用 OR 的結果,這些值定義於 Wdm.hNtddk.h 中。

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 專案所指定的特性值是 ORed,且每個 呼叫 IoCreateDevice 時都會指定這些值,以在裝置堆疊上建立裝置物件。 OR 作業會在新增所有裝置對象之後發生,但在啟動裝置之前。

特性值 (包括零) 值會覆寫相關聯類別安裝程式 INF 中指定的任何全類別裝置特性。

如需裝置特性的詳細資訊,請參閱 指定裝置特性

DeviceType
DeviceType HKR AddReg 專案會指定裝置的裝置類型。 device-type 是 Wdm.hNtddk.h 中所定義FILE_DEVICE_XXX 常數的數值。 0x10001的旗標值會指定裝置類型值是 REG_DWORD。 如需詳細資訊,請參閱 指定裝置類型

類別安裝程式 INF 應該指定套用至類別中所有裝置或幾乎所有裝置的裝置類型。 例如,如果類別中的裝置屬於類型FILE_DEVICE_CD_ROM,請指定 裝置類型的 0x02。 如果裝置 INF 指定 DeviceType 的值,則會覆寫類別安裝程式所設定的值,如果有的話。 如果類別或裝置 INF 指定 DeviceType 值,PnP 管理員會將該類型套用至 實體裝置物件, ( 裝置總線驅動程式所建立的 PDO) 。

安全性
Security HKR AddReg 專案會指定裝置的安全性描述項。 security-descriptor-string 是具有標記的字串,用來指出 DACL (D:) 安全性元件。

類別安裝程式 INF 可以指定裝置類別的安全性描述項。 裝置 INF 可以指定個別裝置的安全性描述項,覆寫 類別的安全性。 如果類別和/或裝置 INF 指定 安全性描述元字串,PnP 管理員會將描述項傳播至裝置的所有裝置物件, ( DO) 。 這包括函式裝置物件 (FDO) 、選擇性 篩選 DO 和 PDO。

如需安全性描述項字串格式的詳細資訊,請參閱 Microsoft Windows SDK 檔。

如需如何指定安全描述元的詳細資訊,請參閱 建立安全裝置安裝

UpperFilters
UpperFilters HKR AddReg 專案會指定 PnP 上層篩選驅動程式。 DDInstall 中的這個專案。HW 區段會定義一或多個裝置特定的上層篩選器驅動程式。 在 ClassInstall32 區段中,此項目會定義一或多個全類別的上層篩選驅動程式。

LowerFilters
LowerFilters HKR AddReg 專案會指定 PnP 較低篩選驅動程式。 DDInstall 中的這個專案。HW 區段會定義一或多個裝置特定的較低篩選驅動程式。 在 ClassInstall32 區段中,此項目會定義一或多個全類別的較低篩選驅動程式。

排除
如果存在且設定為 「1」 則 為獨佔 HKR AddReg 專案,指定裝置為 獨佔裝置。 否則不會將裝置視為獨佔。 如需詳細資訊,請參閱 指定裝置對象的獨佔存取權。

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 專案可用來指定描述裝置實體位置的文字字元串。 它會覆寫裝置總線驅動程式所提供的 LocationInformation 字串,以回應 IRP_MN_QUERY_DEVICE_TEXT 要求。

ResourcePickerTags
ResourcePickerTags HKR AddReg 專案會指定裝置的資源選擇器標籤。

ResourcePickerExceptions
ResourcePickerExceptions HKR AddReg 專案會指定裝置允許的資源衝突。

範例

AddReg 指示詞參考了此範例中的 (SCSI) Miniport_EventLog_AddReg 區段,在 DDInstallAddService 指示詞所參考的 INF 寫入器定義區段下此 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 

請注意,您可以指定十六進位格式的旗標值,如範例所示,也可以定義字串佔位元,例如 %FLG_ADDREG_TYPE_DWORD% 在每個 INF 檔案的 [Strings] 區段中。

另請參閱

AddInterface

AddService

BitReg

ClassInstall32

DDInstall

DDInstall。CoInstallers

DDInstall。硬體

DDInstall。介面

DDInstall。服務

DelReg

InterfaceInstall32

字串