在Registry键中检索(默认)值

时间:2015-07-29 20:50:35

标签: powershell registry registrykey

如何获取/admin注册表值?

对于此密钥:(Default)值低于。

enter image description here

我正在使用:

HKCR\http\shell\open\command\

获取Get-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\Shell\Associations\UrlAssociations\http\UserChoice\" |% {$_.ProgId}

的值

enter image description here

现在我想在顶部图片中获取ProgId的值,但将(Default)替换为{$_.ProgId}不会返回任何内容,{$_."(default)"}会回来。

3 个答案:

答案 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)

  1. 如果您想使用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)"
    
  2. 另一种方法,在某些情况下可能更容易,是使用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

  3. 的结果

答案 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}}