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 编写器定义的部分下指定此指令:

  • 由 DDInstall.Services 节中的 AddService 指令引用的 service-install-sectionevent-log-install 节。
  • 由 DDInstall 中的 AddInterface 指令引用的 add-interface-section。接口部分。
  • InterfaceInstall32 节中引用的 install-interface-section

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的缩写。

香港
HKEY_USERS的缩写。

HKR
相对根 - 也就是说,使用此缩写指定的键相对于与出现此 BitReg 指令的 INF 节关联的注册表项,如下表所示。

包含 BitReg 指令的 INF 节 HKR 引用的注册表项
INF DDInstall 设备 的软件密钥
INF DDInstall。HW 部分 设备 的硬件密钥
INF DDInstall。“服务 ”部分 服务密钥

注意

HKR 不能用于从 INF DefaultInstall 节引用的位注册表节中。

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

subkey
此可选值表示为 INF 的 Strings 节中定义的 %strkey% 标记,或者表示为给定的 reg-root (key1\key2\key3...) 下的注册表路径,指定包含要修改的值条目的键。

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

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

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

0x00000000 (FLG_BITREG_CLEARBITS)
清除 字节掩码指定的位。

0x00000001 (FLG_BITREG_SETBITS)
设置 字节掩码指定的位。

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

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

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

注解

每个 位注册表节 名称对于 INF 文件必须是唯一的,但它可由同一 INF 其他节中的 BitReg 指令引用。 INF 编写器创建的每个节名称在 INF 文件中必须唯一,并且必须遵循定义节名称的一般规则。 有关这些规则的详细信息,请参阅 INF 文件的一般语法规则

还可以通过在 INF 文件的其他位置的 add-registry 节中覆盖现有 REG_BINARY类型值条目的当前值来修改该值。 有关 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。硬件

InterfaceInstall32