HKEY_CLASSES_ROOT =
HKEY_CURRENT_USER\Software\Classes ∪ HKEY_LOCAL_MACHINE\Software\Classes
; 1. Win11 HKCR 根键默认是 System 所有, Win10 HKCR 根键默认是 Administrators 所有。
; 2. 以 System、管理员 还是 普通用户 登录系统?
; 在注册表里,使用 Regedit.exe 6.2.22621.3527 操作 HKCR 行为与以上两项无关,都统一如下:
; 项 查权限所有者 当前用户是 HKCU,HKLM 是 System
; 项 新增 只新增到 HKLM,复制整条完整路径,不复制值。
; 项 读删改 优先操作 HKCU,HKCU 没有该项 才操作 HKLM。HKCU 遮盖 HKLM
; 值(包括数据) 新增 优先新增到 HKCU,HKCU 没有该父项才操作 HKLM。在 HKCR 根键处新增值,只新增到 HKCU
; 值(包括数据) 读删改 优先操作 HKCU,HKCU 没有该父项才操作 HKLM
总结:
按理,对项、值的操作(增删改查)都是优先操作 HKCU,HKCU 没有该项(值)才操作 HKLM。即 HKCU 遮盖 HKLM
但是,对项的新增操作是个特例,只新增到 HKLM。
优先权:
HKCU > HKLM
父项 > 子值 > 子值数据
:: ---------------------------------------------------------------------------------------------------------------
HKCR = HKCU\Software\Classes ∪ HKLM\Software\Classes
; 1. Win11 HKCR 根键默认是 System 所有, Win10 HKCR 根键默认是 Administrators 所有。
; 2. 以 System、管理员 还是 普通用户 登录系统?
; 在注册表里,使用 RegWorkshop v5.1.0 操作 HKCR 行为与以上两项无关,都统一如下:
; 项 查权限所有者 当前用户是 HKCU,HKLM 是 System
; 项 新增 只新增到 HKLM,复制整条完整路径,不复制值。
; 项 读取、删除 优先操作 HKCU,HKCU 没有该项 才操作 HKLM,HKCU 遮盖 HKLM
; 项 修改项名 优先删除 HKCU,HKCU 没有该项 才删除 HKLM。再只新增到 HKLM,复制整条完整路径上的项和值。
; 修改 = 删除 + 新增,因为这是 RegWorkshop 的 Bug
; 值(包括数据) 新增 优先操作 HKCU,HKCU 没有该父项才操作 HKLM。在 HKCR 根键处新增值,只新增到 HKCU
; 值(包括数据) 读删改 优先操作 HKCU,HKCU 没有该父项才操作 HKLM
总结:
按理,对项、值的操作(增删改查)都是优先操作 HKCU,HKCU 没有该项(值)才操作 HKLM。即 HKCU 遮盖 HKLM
但是,对项的新增操作是个特例,只新增到 HKLM。
因为注册表没有修改项名的函数,所以修改项名 = 删除 + 新增,改项名也随新增项行为而改变。
优先权:
HKCU > HKLM
父项 > 子值 > 子值数据