查明 HKEY_USER 路径是否存在的命令

Command To Find Out If a HKEY_USER Path Exists

我需要一个命令来检查用户 HKEY_USERS 注册表项路径是否存在。我已经为静态注册表路径编写了一些代码,但我发现很难匹配不同机器上不同的注册表路径。

例如,如果路径存在,下面的 PowerShell 代码会判断为 true 或 false,我需要 HKEY_USERS 唯一配置文件的内容:

Test-Path "HKLM:\System\CurrentControlSet\Control\Lsa\MSV1_0\NTLMMinClientSec"

我想检查

HKEY_USERS\S-1-5-21-2990211406-3548698811-2423315665-500

path 存在,挑战之一是 HKEY_USERS 的值会因不同的机器而改变。我制作了以下正则表达式来匹配唯一值:

^S-1-5-21-[0-9]+-[0-9]+-[0-9]+-[0-9]{3,}

但是,正则表达式不适用于 PowerShell 上的 Test-Path 命令。有谁知道我如何制作一个命令来检查用户 HKEY_USERS 路径是否存在,使用某种带有正则表达式的 Windows 命令?

获取对配置单元根的引用,然后调用 GetSubKeyNames() 以查看是否有任何子键与模式匹配:

$BuiltinDomainAdministratorPattern = '^S-1-5-21-[\d\-]+-500$'

$HKU = Get-Item Registry::HKEY_USERS
if($HKU.GetSubKeyNames() -match $BuiltinDomainAdministratorPattern){
    # subkey exists
}

或者您可以为 HKEY_USERS 配置单元创建一个新的 PSDrive(默认情况下仅存在 HKLM: 和 HKCU:)

New-PSDrive -PSProvider Registry -Name HKU -Root HKEY_USERS -ErrorAction SilentlyContinue

Test-Path -Path HKU:\S-1-5-21-2990211406-3548698811-2423315665-500