我需要一个命令来检查用户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路径是否存在?
答案 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