我正在尝试查找或生成 Windows 多个版本中存在的所有注册表项的列表。我在网上搜索了很多次,但没有找到这样的列表或递归生成此类列表的命令。有人知道如何获取这样的列表吗?
答案1
感谢 IT Solutions 的评论,我找到了答案。以下是命令行代码:
reg.exe export HKEY_LOCAL_MACHINE C:\path\machine_registry.txt
reg.exe export HKEY_CLASSES_ROOT C:\path\local_registry.txt
reg.exe export HKEY_CURRENT_USER C:\path\current_registry.txt
reg.exe export HKEY_USERS C:\path\users_registry.txt
reg.exe export HKEY_CURRENT_CONFIG C:\path\config_registry.txt
答案2
从命令行:
reg.exe export HKLM\hardware hklm-hw.reg
reg.exe export HKLM\sam hklm-sam.reg
reg.exe export HKLM\security hklm-sec.reg
reg.exe export HKLM\software hklm-sw.reg
reg.exe export HKLM\system hklm-sys.reg
'' the same for HKCU branch
reg.exe export HKCU\folders hkcu-folders.reg
等等...然后解析您想要的内容或使用compare
选项来获取差异
您还可以使用合并比较并获取diff
注册表快照
要以文本格式保存整个注册表,只需运行regedit.exe
并从注册表根目录导出所有内容。
如果您想以编程方式执行此操作,那么这个问题已经有答案了:https://stackoverflow.com/q/6825555
答案3
您可以使用 PowerShell!
Function ListSubkeys($rootKey) {
Get-ChildItem -LiteralPath $rootKey -ErrorAction SilentlyContinue | % {
$_.Name # Output the item's name
ListSubkeys $_.Name # Recurse into its subkeys
}
}
Push-Location $args[0]
ListSubkeys $args[0]
Pop-Location
此脚本定义一个递归函数ListSubkeys
,然后调用它。要使用它,请将该代码保存为文件.ps1
。按照启用脚本部分中的说明操作后PowerShell 标签 wiki,您可以像这样从 PowerShell 提示符运行它,以 PowerShell 路径格式指定文件名和起始键(尾随\
很重要):
.\regkeys.ps1 'HKLM:\'
要将输出发送到文件,请使用>
重定向运算符,如下所示:
.\regkeys.ps1 'HKCU:\' > C:\Users\me\Documents\allmyHKCUkeys.txt
请注意,HKCR 实际上是 HKLM 和 HKCU 中条目的组合,因此导出它会产生重复。
答案4
您可以在 PS 7.4.0 中执行类似操作。
@( 'HKLM:\', 'HKCU:\' ) | % { Get-ChildItem -Recurse -Path $_ 2>$null }