读写注册表的 HKEY_LOCAL_USER 十分容易,因为这个配置单元对于所有用户都一致。那么如何读写其他用户的 HKEY_CURRENT_USER 配置单元?
假设您是管理员并且希望为其他用户的 HKEY_CURRENT_USER 配置单元添加注册表值。
首先您需要挂载该用户的用户配置单元。该配置单元位于该用户的用户配置文件下的 NTUSER.DAT 文件中。作为一个管理员,您需要先运行以下 PowerShell 代码来挂载 UserTobias 用户的用户配置文件:
1 PS  C:\> REG LOAD HKEY_Users\UserTobias "C:\Users\Tobias\NTUSER.DAT" 
 
该用户配置单元将挂载在 HKEY_USERS 下名为 UserTobias 的注册表键中,而且 PowerShell 可以类似这样存取该路径:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 PS  C:\> Get-ChildItem  -Path  Registry::HKEY_USERS\UserTobias    Hive: HKEY_USERS\UserTobias Name                           Property ----                            -------- AppEvents Console                        ColorTable00             : 789516                                  ColorTable01             : 14300928                                  ColorTable02             : 958739                                  ColorTable03             : 14521914                                  ColorTable04             : 2035653                                  ColorTable05             : 9967496                                  ColorTable06             : 40129  
 
现在要读取甚至写入该指定用户的配置单元十分容易。以下代码将创建一个新的注册表键:
1 PS  C:\> $null  = New-Item  -Path  Registry::HKEY_USERS\UserTobias\Software\Microsoft\Windows\CurrentVersion\Test
 
以下是如何读取/写入一个值:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 PS  C:\> Get-ItemProperty  -Path  Registry::HKEY_USERS\UserTobias\Software\Microsoft\OneDriveEnableDownlevelInstallOnBluePlus : 0  EnableTHDFFeatures               : 1  PSPath                           : Microsoft.PowerShell.Core\Registry::HKEY_USERS\UserTobias\Software\Microsoft\OneDrive PSParentPath                     : Microsoft.PowerShell.Core\Registry::HKEY_USERS\UserTobias\Software\Microsoft PSChildName                      : OneDrive PSProvider                       : Microsoft.PowerShell.Core\Registry PS  C:\> Set-ItemProperty  -Path  Registry::HKEY_USERS\UserTobias\Software\Microsoft\OneDrive -Name  EnableDownlevelInstallOnBluePlus -Value  1  -Type  DWordPS  C:\> Get-ItemProperty  -Path  Registry::HKEY_USERS\UserTobias\Software\Microsoft\OneDriveEnableDownlevelInstallOnBluePlus : 1  EnableTHDFFeatures               : 1  PSPath                           : Microsoft.PowerShell.Core\Registry::HKEY_USERS\UserTobias\Software\Microsoft\OneDrive PSParentPath                     : Microsoft.PowerShell.Core\Registry::HKEY_USERS\UserTobias\Software\Microsoft PSChildName                      : OneDrive PSProvider                       : Microsoft.PowerShell.Core\Registry 
 
当您操作完 HKEY_USERS 注册表配置单元之后,别忘了卸载它:
1 PS  C:\> $null  = REG UNLOAD HKEY_Users\UserTobias
 
请注意这条命令将会抛出一个 “Access Denied” 错误,如果您没有管理员特权,或者该注册表配置单元正在被其他人使用。例如,如果您启动了 regedit.exe,当该用户配置单元加载以后,regedit.exe 可以显示加载的用户配置单元,而当 regedit 处于打开状态时,该配置单元被锁定并且无法关闭。