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 寫入器定義的區段下指定這個指示詞:
INF DDInstall 中 AddService 指示詞所參考的 service-install-section 或 event-log-install 區段。服務區段。
INF DDInstall 中 AddInterface 指示詞所參考的 add-interface-section。介面區段。
INF InterfaceInstall32 區段中參考的 install-interface-section。
每個 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_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 專案會指定裝置的特性。
特性值是數值,這是在一或多個FILE_* 檔案特性值上使用 OR 的結果,這些值定義於 Wdm.h 和 Ntddk.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.h 或 Ntddk.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 區段,在 DDInstall 中 AddService 指示詞所參考的 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] 區段中。