INF BitReg 指令

注意

从 Windows 11 版本 22H2 开始,使用此指令的驱动程序包不再符合从硬件开发人员中心获得签名的条件。

通用驱动程序包Windows 驱动程序不能使用此指令。

BitReg 指令引用一个或多个 INF 编写器定义的部分,用于设置或清除注册表中现有 REG_BINARY 类型值项中的位。 但是,设备/驱动程序 INF 文件中很少使用此指令。

[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)
 
BitReg=bit-registry-section[,bit-registry-section]...

BitReg 指令可以在上述正式语法说明中的任何部分下指定。 此指令也可以在以下任何 INF 编写器定义的部分中指定:

BitReg 指令引用的每个命名部分的形式如下:

[bit-registry-section]
reg-root, [subkey], value-entry-name, [flags], byte-mask, byte-to-modify
reg-root, [subkey], value-entry-name, [flags], byte-mask, byte-to-modify
...

bit-registry-section 可以具有任意数量的条目,每个条目单独一行。

条目

reg-root
为此条目中提供的其他值标识注册表树的根。 值可以是下列任一值:

HKCR
HKEY_CLASSES_ROOT 的缩写。

HKCU
HKEY_CURRENT_USER 的缩写。

HKLM
HKEY_LOCAL_MACHINE 的缩写。

HKU
HKEY_USERS 的缩写。

HKR
相对根 - 也就是说,使用该缩写指定的键是相对于与此 BitReg 指令所在 INF 部分相关联的注册表项而言的,如下表所示。

包含 BitReg 指令的 INF 部分 HKR 引用的注册表项
INF DDInstall 部分 设备的 software key
INF DDInstall.HW 部分 设备的 hardware key
INF DDInstall.Services 部分 Services

注意

HKR 不能在 INF DefaultInstall 部分引用的位注册表部分中使用。

有关存储在 HKEY_LOCAL_MACHINE 根下的驱动程序信息的详细信息,请参阅设备和驱动程序的注册表树和键

subkey
此可选值可以是在 INF 的 Strings 部分中定义的 %strkey% 标记,也可以是给定 reg-root 下的注册表路径 (key1\key2\key3...),它指定了包含要修改的值项的键。

value-entry-name
指定要修改的(现有)子键中现有 REG_BINARY 类型值项名称。 它既可以表示为“引用字符串”,也可以表示为在 INF 的 Strings 部分中定义的 %strkey% 标记。

flags
此可选的十六进制值表示为系统定义的低字节和高字节标志值的 ORed 位掩码,指定是清除还是设置给定字节掩码中指定的位。 其默认值为 0,即清除注册表 64 位部分中的位。

每个标志的位掩码值如下所示:

0x00000000 (FLG_BITREG_CLEARBITS)
清除 byte-mask 指定的位。

0x00000001 (FLG_BITREG_SETBITS)
设置 byte-mask 指定的位。

0x00004000 (FLG_BITREG_32BITKEY)(Windows XP 及更高版本的 Windows。)
在 32 位注册表中进行指定更改。 如果未指定,则在本机注册表中进行更改。

byte-mask
此字节大小的掩码以十六进制表示,指定是清除还是设置给定 value-entry-name 的当前值中的哪些位。

byte-to-modify
此字节大小的值以十进制表示,指定要修改的 REG_BINARY 类型值中字节的从零开始的索引。

注解

每个 bit-registry-section 名称在 INF 文件中都必须是唯一的,但可以被同一 INF 文件中其他部分的 BitReg 指令引用。 每个 INF-writer-created 部分名称在 INF 文件中都必须唯一,并且必须遵循定义部分名称的一般规则。 有关这些规则的详细信息,请参阅 INF 文件的常规语法规则

现有 REG_BINARY 类型值项的值也可以通过在 INF 文件其他地方的 add-registry 部分中替代其当前值来进行修改。 有关 add-registry 部分的详细信息,请参阅 AddReg 指令的引用。

使用 BitReg 指令需要定义另一个 INF 文件部分。 但是,现有 REG_BINARY 类型值项的值可以在此类部分中逐位修改,从而保留所有剩余位的值。

示例

以下示例显示了一个虚构应用的位注册表部分。

[AppX_BitReg]
; set first bit of byte 0 in ProgramData value entry
HKLM,Software\AppX,ProgramData,1,0x01,0 
; preceding would change value 30,00,10 to 31,00,10

; clear high bit of byte 2 in ProgramData value entry
HKLM,Software\AppX,ProgramData,,0x80,2
; preceding would change value 30,00,f0 to 30,00,70

; set second and third bits of byte 1 in ProgramData value entry
HKLM,Software\AppX,ProgramData,1,0x06,1
; preceding would change value 30,00,f0 to 30,06,f0

另请参阅

AddInterface

AddReg

AddService

ClassInstall32

DDInstall

DDInstall.CoInstallers

DDInstall.HW

InterfaceInstall32