如何获取/admin
注册表值?
对于此密钥:(Default)
值低于。
我正在使用:
HKCR\http\shell\open\command\
获取Get-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\Shell\Associations\UrlAssociations\http\UserChoice\" |% {$_.ProgId}
现在我想在顶部图片中获取ProgId
的值,但将(Default)
替换为{$_.ProgId}
不会返回任何内容,{$_."(default)"}
会回来。
答案 0 :(得分:6)
也许这可以提供帮助:
(get-itemproperty -literalpath HKCU:\Software\Microsoft\Windows\Shell\Associations\UrlAssociations\http\UserChoice).'(default)'
请记住,如果未设置该值,则返回$null
,然后您的方法返回正确的值;)
忘记说HKCR
未定义为默认,请使用:
New-PSDrive -Name HKCR -PSProvider Registry -Root HKEY_CLASSES_ROOT
然后你可以正确地做到:
(get-itemproperty -literalpath HKCR:\http\shell\open\command\).'(default)'
答案 1 :(得分:3)
如果您想使用HKCR,检查HKCU和HKLM中的课程,您不需要创建PSDrive,但请使用:
(Get-ItemProperty Registry::HKCR\http\shell\open\command)."(Default)"
# OR
(Get-ItemProperty Registry::HKEY_CLASSES_ROOT\http\shell\open\command)."(Default)"
另一种方法,在某些情况下可能更容易,是使用Method of RegistryKey对象:
(Get-Item -Path Registry::HKCR\http\shell\open\command).GetValue("")
# OR
(Get-Item -Path Registry::HKEY_CLASSES_ROOT\http\shell\open\command).GetValue("")
这也适用于Get-ChildItem Cmdlet
答案 2 :(得分:0)
尽管OP并没有要求使用此命令,但以下命令可能会有所帮助,因为它显示了搜索配置单元下面所有键的所有(默认)条目是多么容易:
dir HKLM:\SOFTWARE\ -Recurse -ErrorAction Ignore |
Get-ItemProperty -Name "(default)" -ErrorAction Ignore |
Where-Object "(Default)" -like "*ocx" |
Select-Object "(default)", PsPath
该命令在HKLM中搜索所有已注册的OCX文件。
由于输出的可读性不佳,因此我将选择“ Convert-Path”以使注册表路径更具可读性:
dir HKLM:\SOFTWARE\ -Recurse -ErrorAction Ignore |
Get-ItemProperty -Name "(default)" -ErrorAction Ignore |
Where-Object "(Default)" -like "*ocx" |
Select-Object @{n="OcxPath";e={$_."(default)"}},@{n="Regpath";e={Convert-Path $_.PsPath}}