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

时间:2019-05-22 16:29:11

标签: regex windows powershell command registry

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

例如,如果路径存在,下面的PowerShell代码会说是或否,我需要一些HKEY_USERS唯一配置文件:

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

我想检查

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

路径存在,挑战之一是HKEY_USERS的值将针对不同的机器而改变。我精心制作了以下正则表达式以匹配唯一值:

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

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

2 个答案:

答案 0 :(得分:2)

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

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

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

答案 1 :(得分:0)

或者您也可以为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