INF文件中HKR
在Windows驱动的注册表中,AddReg用于添加注册表项,其中有一些通用的缩写:
- HKCR代表HKEY_CLASSES_ROOT;
- HKCU代表HKEY_CURRENT_USER;
- HKLM代表HKEY_LOCAL_MACHINE
- HKU代表HKEY_USERS
不过,我们有时会经常见到的是HKR,如:
[Version]
Signature="$WINDOWS NT$"
Class=System
ClassGuid={4d36e97d-e325-11ce-bfc1-08002be10318}
Provider=%ManufacturerName%
DriverVer = 08/17/2022,17.46.46.954
CatalogFile=UsbzhVTouch.cat
[DestinationDirs]
DefaultDestDir = 12
[SourceDisksNames]
1 = %DiskName%,,,""
[SourceDisksFiles]
UsbzhVTouch.sys = 1,,
[Manufacturer]
%ManufacturerName%=Standard,NTamd64
[Standard.NTamd64]
%UsbzhVTouch.DeviceDesc%=UsbzhVTouch_Device,root\USBZHVTouch
[UsbzhVTouch_Device.NT]
CopyFiles=Drivers_Dir
[UsbzhVTouch_Device.NT.HW]
AddReg=UsbzhVTouch_Device.NT.AddReg
[UsbzhVTouch_Device.NT.HW]
AddReg=UsbzhVTouch_Device.NT.AddReg
[UsbzhVTouch_Device.NT.AddReg]
HKR,,DeviceCharacteristics,0x10001,0x0100 ; Use same security checks on relative opens
该缩写HKR代表那个注册表键值的缩写呢?通过查询帮助文档可以发现如下解:
(1)在DDInstall section中,HKR缩写表示的是设备的software key(软件子键),具体注册表键值是:
HKLM/SYSTEM/CurrentControlSet/Control/Class/%ClassGuid%/%DeviceIndex%
其中ClassGuid是设备类的GUID,DeviceIndex是设备序号,如果PC中有多于一个的同类设备,序号会顺序排列下去0000、0001、0002……
(2)在DDInstall.HW section中,HKR缩写表示的是设备的hardware key(硬件子键),具体注册表键值是:
HKLM/SYSTEM/CurrentControlSet/Enum/enumerator/deviceID,其中enumerator是设备类别,deviceID是设备的id号
(3)在DDInstall.Services section中,HKR缩写表示的是Services key(服务子键),具体注册表键值是:
HKLM/SYSTEM/CurrentControlSet/Service
(4)在DDInstall.Interfaces section中,一般在用AddInterface Directive来进行和注册表相关的操作时会用的HKR,这时HKR缩写表示HKLM/SYSTEM/CurrentControlSet/Control/DeviceClasses/%InterfaceClassGUID%/ branch,其中InterfaceClassGUID由AddInterface Directive的第一个参数指定,branch由AddInterface Directive的第二个参数指定。
(5)在ClassInstall32 section中,有时候也会出现HKR,这时HKR缩写表示HKLM/SYSTEM/CurrentControlSet/Control/Class/%ClassGUID%,其中ClassGuid是设备类的GUID。
来源于:https://docs.microsoft.com/en-us/windows-hardware/drivers/install/inf-addreg-directive
另外在编写INF时,有时候会用一些整数来表示特定的路径,如:
10 = C:/Windows(即windows目录)
11 = C:/Windows/system32(即windows系统目录)
12 = C:/Windows/system32/drivers (即windows驱动目录)
所以上面的示例中的HKR在注册表中的位置为:
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\ROOT\SYSTEM\0003]