gpt4 book ai didi

powershell - get-itemproperty 报告项不存在,当它存在时

转载 作者:行者123 更新时间:2023-12-05 01:07:25 24 4
gpt4 key购买 nike

我在获取 REG_SZ 时遇到了一些奇怪的问题值使用:
(get-itemproperty -Path "Registry::HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Uninstall\VLC media player" -Name UninstallString).UninstallString

(get-itemproperty -Path "Registry::HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Uninstall\VLC media player" -Name UninstallString).UninstallString

get-itemproperty : Cannot find path 'HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Uninstall\VLC media player' because it
does not exist.
At line:1 char:2
+ (get-itemproperty -Path "Registry::HKEY_LOCAL_MACHINE\Software\Microsoft\Windows ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (HKEY_LOCAL_MACH...LC media player:String) [Get-ItemProperty], ItemNotFoundException
+ FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.GetItemPropertyCommand

此方法适用于另一个 REG_SZ没有问题,但是当我在 Uninstall 下调用许多键时它失败。

具体来说,它适用于:
(get-itemproperty -Path "Registry::HKEY_CURRENT_USER\Software\Microsoft\Command Processor" -Name autorun).AutoRun
这两个数据条目都存在于我的系统中,如在 regedit 中可见...

然而,非常有趣的是,它们不存在于以下结果中:
Get-ChildItem "Registry::HKEY_LOCAL_MACHINE\software\microsoft\windows\currentversion\uninstall\"

还有几个“缺失”的键。这似乎是一些我不熟悉的奇怪的注册表命名空间虚拟化(类似于 HKEY_CLASSES_ROOT)?

最佳答案

A forum thread lead me to the answer.

它讨论了 the virtualization of the registry for 32-bit and 64-bit programs .

在这种情况下,由于键“丢失”,必须检查其他路径(请注意,在尝试任何“错误”操作之前,我应该在条件中检查带有 test-path 的路径)。

PS > (dir HKLM:\SOFTWARE\wow6432node\Microsoft\Windows\CurrentVersion\Uninstall | measure).count
134
PS > (dir hklm:\software\microsoft\windows\currentversion\uninstall | measure).count
134

所以,我必须运行 32 位 powershell.exe。
PS > [Environment]::Is64BitProcess
False

另外, HKEY_CLASSES_ROOT\Installer\Products是列出与 Windows Installer 一起安装的程序的另一个位置。

This answer is helpful in regards to 32-bit vs. 64-bit powershell.exe .

The solution to this problem is robust .我有 modified the previously linked function a bit使其更易于访问。

附言我在 macbook pro 上的 bootcamp 上运行 Windows 7。奇怪的是,不管我执行的是什么 powershell.exe,它都是 32 位的。无论该位置是否在 wow6432node 下方,我都无法看到注册表项。 .

关于powershell - get-itemproperty 报告项不存在,当它存在时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18709222/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com