Reputation: 197
How to check the presence of registry key named "Mon12345678" under HKEY_CURRENT_CONFIG\System\CurrentControlSet\Control\VIDEO\ {CD73268F-4662-42EC-80F6-182E03DE7017}\0000
regsitry hive? We can validate till HKEY_CURRENT_CONFIG\System\CurrentControlSet\Control\VIDEO
directly and then run random check under "Video" until we get the sub registry key called "Mon12345678"?
I tried the below code snippet
Test-Path -Path "HKCC:\System\CurrentControlSet\Control\VIDEO\ *\Mon12345678" -ErrorAction SilentlyContinue
But the result shows false even though the sub registry hive is found. How to tackle the problem?
Upvotes: 1
Views: 1379
Reputation: 439228
The HKEY_CURRENT_CONFIG
registry hive is not predefined as a PowerShell drive name HKCC:
, so unless you defined such a drive yourself with New-PSDrive
, it won't exist.
(Get-PSDrive -psProvider Registry).Name
shows you which registry-based drives are defined; by default, it is only HKLM:
(HKEY_LOCAL_MACHINE
) and HKCU:
(HKEY_CURRENT_CONFIG
).
Short of defining your own HKCC:
drive, you can prefix a registry hive name with registry::
(the provider name) in order to target a hive; e.g.:
# Test the existence of a key known to exist in the HKEY_CURRENT_CONFIG registry hive,
# using provider prefix 'registry::'
PS> Test-Path -Path 'registry::HKEY_CURRENT_CONFIG\System\CurrentControlSet\Control'
True
Therefore, to test the existence of a subkey named Mon12345678
across all subkeys (*
) of key HKEY_CURRENT_CONFIG\System\CurrentControlSet\Control\VIDEO
, use the following:
$keyPath = 'registry::HKEY_CURRENT_CONFIG\System\CurrentControlSet\Control\VIDEO'
Test-Path -Path "$keyPath\*\Mon12345678"
If, by contrast, you want to test the existence of a value (a property of a registry key) named Mon12345678
, you cannot use a single Test-Path
call, because Test-Path
can only operate on key paths, not paths ending in value names.
See this answer for background information.
$keyPath = 'registry::HKEY_CURRENT_CONFIG\System\CurrentControlSet\Control\VIDEO'
[bool] (Get-ItemProperty -EA ignore "$keyPath\*" 'Mon12345678')
Upvotes: 1
Reputation: 109
Did you try?
To search part of the registry, use the following syntax:
REG Query HKxx\subkey [/D|/K|/V] /F "search_pattern" /S [/E] [/C]
To search an entire registry hive, just omit the subkey:
REG Query HKxx [/D|/K|/V] /F "search_pattern" /S [/E] [/C]
Source of the solution and full post can be found here
Upvotes: 0