我目前正在使用PowerShell工具,该工具可以通过远程注册表服务从注册表远程读取。用户登录后,我正在读取的数据位于HKCU\Software\
中。显然,当一台计算机具有多个用户帐户时,HKCU将无法准确反映所有用户。有没有一种动态方式可以让我遍历计算机上的所有用户并访问其注册表?
当前,我在PowerShell中执行以下操作:
$KeyType = [Microsoft.Win32.RegistryHive]::CurrentUser
$BaseRegKey = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey($KeyType, $RemoteComputer)
$SoftwareKey = $BaseRegKey.OpenSubKey($SoftwarePathEnding)
我将如何使用类似的代码遍历所有用户以获得所需的正确数据?
很抱歉,如果这个解释不够好,是否需要澄清一下。
答案 0 :(得分:4)
HKCU
是HKU\<User-SID>
的快捷方式,其中用户配置文件中的ntuser.dat
在登录时加载。要访问每个用户的注册表分支,您需要首先加载每个用户的ntuser.dat
,例如通过reg load
在远程主机上运行Invoke-Command
。
Invoke-Command -Computer 'hostname' -ScriptBlock {
& reg load 'HKU\someuser' 'C:\Users\someuser\ntuser.dat'
}
完成后不要忘记reg unload
文件。