INF DelReg 指令

注意

如果正在生成通用或 Windows 驱动程序包,则本指令无效。 请参阅使用通用 INF 文件Windows 驱动程序开发入门

DelReg 指令引用一个或多个 INF 编写器定义的部分,这些部分描述了要从注册表中删除的键和/或值项。

[DDInstall] | 
[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)
 
DelReg=del-registry-section[,del-registry-section]...

DelReg 指令引用的每个 del-registry-section 都具有以下形式:

[del-registry-section]
reg-root-string,subkey[,value-entry-name][,flags][,value]
reg-root-string,subkey[,value-entry-name][,flags][,value]
...

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

条目

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

HKCR
HKEY_CLASSES_ROOT 的缩写。

HKCU
HKEY_CURRENT_USER 的缩写。

HKLM
HKEY_LOCAL_MACHINE 的缩写。

HKU
HKEY_USERS 的缩写。

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

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

注意

HKR 不能在从 INF DefaultInstall 部分引用的 del-registry-section 中使用。

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

subkey
此可选值可以是在 INF 的 Strings 部分中定义的 %strkey% 标记,也可以是给定 reg-root 下的注册表路径 (key1\key2\key3...),用于指定以下内容之一:

  • 要从注册表中删除的子项,位于给定注册表路径的末尾

  • 要从中删除给定 value-entry-name 的现有子项

value-entry-name
此值用于标识要从给定子项中删除的命名值项。 如果要从注册表中删除子项,则应省略该值及其前面的逗号。

flags(Windows XP 及以后的 Windows 版本。)
此可选的十六进制值是系统定义的低字和高字标志值的 ORed 位掩码,用于定义值项的数据类型或控制删除注册表操作。 如果未指定 flags,则将删除 value-entry-name(如已指定)或 subkey

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

0x00002000 (FLG_DELREG_KEYONLY_COMMON)
删除整个子项。

0x00004000 (FLG_DELREG_32BITKEY)
在 32 位注册表中进行指定更改。 如果未指定,则在本机注册表中进行更改。

0x00018002 (FLG_DELREG_MULTI_SZ_DELSTRING)
在多字符串注册表项中,删除与值指定的字符串值相匹配的所有字符串。 忽略大小写。

value(Windows XP 及以后的 Windows 版本。)
如果 flags 表示需要注册表值,则指定注册表值。

注解

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

一般来说,INF 不应试图删除由系统组件或其他设备的 INF 文件设置的子项或现有子项中的值项。 del-registry-section 的目的是通过使用同一提供程序提供的新 INF 文件,清除先前安装中过时的注册表信息。

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

在 Windows XP 之前的操作系统版本中,删除项的唯一方法是指定以下内容:

reg-root-string, subkey

对于 Windows XP 及更高版本的 Windows,还允许使用以下命令(指定 32 位注册表):

reg-root-string, subkey,,0x4000

示例

此示例说明了系统提供的 COM/LPT 端口类安装程序 INF 如何从注册表中删除有关 COM 端口过时的 NT 特定注册表信息。

[ComPort.NT]
AddReg=ComPort.NT.AddReg
 ... ; more directives omitted here

[ComPort.NT.HW]
DelReg=ComPort.NT.HW.DelReg

[Comport.NT.AddReg]
HKR,,EnumPropPages32,,"MSPorts.dll,SerialPortPropPageProvider"

[ComPort.NT.HW.DelReg]
HKR,,UpperFilters

另请参阅

AddReg

AddInterface

AddService

ClassInstall32

DDInstall

DDInstall.HW

DDInstall.Services

InterfaceInstall32

字符串