Команда, чтобы узнать, существует ли путь HKEY_USER - PullRequest
0 голосов
/ 22 мая 2019

Мне нужна команда, чтобы проверить, существует ли путь к ключу реестра 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

путь существует, и одна из проблем заключается в том, что значение для HKEY_USERS будет меняться для разных машин. Я создал следующее регулярное выражение для соответствия уникальному значению:

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

Однако регулярное выражение не работает с командой Test-Path в PowerShell. Кто-нибудь знает, как я мог бы создать команду, чтобы проверить, существует ли пользовательский путь HKEY_USERS, используя какую-то команду Windows с регулярным выражением?

Ответы [ 2 ]

2 голосов
/ 22 мая 2019

Получите ссылку на корень улья, затем вызовите GetSubKeyNames(), чтобы узнать, соответствуют ли какие-либо подразделы шаблону:

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

$HKU = Get-Item Registry::HKEY_USERS
if($HKU.GetSubKeyNames() -match $BuiltinDomainAdministratorPattern){
    # subkey exists
}
0 голосов
/ 22 мая 2019

Или вы можете просто создать новый PSDrive для куста HKEY_USERS (только 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
...