INF DelReg 指令
注意
如果要生成通用或 Windows 驱动程序包,则此指令无效。 请参阅在 Windows 驱动程序中使用通用 INF 文件和入门。
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的缩写。
香港
HKEY_USERS的缩写。
HKR
相对根,其中使用此缩写指定的键相对于与此 DelReg 指令出现的 INF 部分关联的注册表项,如下表所示。
包含 AddReg 指令的 INF 节 | HKR 引用的注册表项 |
---|---|
INF DDInstall 节 | 设备 的软件密钥 |
INF DDInstall。HW 部分 | 设备 的硬件密钥 |
INF DDInstall。“服务 ”部分 | 服务密钥 |
注意
HKR 不能在从 INF DefaultInstall 节引用的 del-registry-section 中使用。
有关存储在 HKEY_LOCAL_MACHINE 根目录下的驱动程序信息的详细信息,请参阅 设备和驱动程序的注册表树和密钥。
subkey
此可选值以在 INF 的 Strings 节中定义的 %strkey% 标记形式或给定 reg-root (key1\key2\key3...) 下的注册表路径形式,指定以下项之一:
要在给定注册表路径末尾的注册表中删除的子项
要从中删除给定 value-entry-name 的现有子项
value-entry-name
此值标识要从给定子项中删除的命名值条目。 如果要从注册表中删除子项本身,应省略此值及其前面的逗号。
标志 (Windows XP 及更高版本的 Windows.)
此可选的十六进制值表示为系统定义的低字和高字标志值的 ORed 位掩码,定义值条目的数据类型,或控制删除注册表操作。 如果未指定 标志 ,则将删除 value-entry-name ((如果指定) 或 子项 )。
其中每个标志的位掩码值如下所示:
0x00002000 (FLG_DELREG_KEYONLY_COMMON)
删除整个子项。
0x00004000 (FLG_DELREG_32BITKEY)
在 32 位注册表中执行指定的更改。 如果未指定,则对本机注册表进行更改。
0x00018002 (FLG_DELREG_MULTI_SZ_DELSTRING)
在多字符串注册表项中,删除与 value 指定的字符串值匹配的所有字符串。 忽略大小写。
value (Windows XP 及更高版本的 Windows.)
如果 标志 指示需要注册表值,则指定注册表值。
注解
可以在上述正式语法语句所示的任何部分下指定 DelReg 指令。 还可以在以下任一 INF 编写器定义的部分下指定此指令:
由 INF DDInstall 中的 AddService 指令引用的 service-install-section 或 event-log-install 节。“服务”部分。
由 INF DDInstall 中的 AddInterface 指令引用的 add-interface-section。接口部分。
INF InterfaceInstall32 节中引用的 install-interface-section。
通常,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