这个标题可能有点令人困惑,因为我不知道有什么更好的说法。
无论如何,我有这个代码Get-ItemProperty HKLM:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\* | Select-Object DisplayName, DisplayVersion, Publisher, InstallDate | Format-Table –AutoSize
这显示了我 PC 上安装的所有程序。
我对 . 很熟悉,但我对如何仅获取列表中程序的名称有点困惑。有什么帮助吗?
仅在
Select-Object
命令中包含名称:有两个注册表项,其中包含已安装的程序。
用于安装应用程序的注册表项:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall
和 64 位操作系统上 32 位应用程序的注册表项。HKEY_LOCAL_MACHINE\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall
您可以创建一个 ForEach 循环以获取每个应用程序的点属性“DisplayName”,然后在对唯一名称进行排序之前添加到数组中 $array = $row = $Location = $Reg = $null
可能存在已安装程序的其他注册表位置,并且仅对所有用户或当前用户以外的特定用户可用。
您所能获得的只是注册表中存在的值。您可以列出可能的值
通常,您不会找到可执行文件的名称,而只会找到 DisplayName。您可以查看 DisplayIcon 以查看可执行文件,但这不是标准的。
其他答案是正确的,但我想加两分钱。
我会使用类似于 Antony 评论中的内容:
但是我会使用HKLM:PSDrive,我认为这是最简单的方法:
然而这只是图片的一半,Wow6432Node 的存在意味着您使用的是 64 位 Windows,因为它只会存在于 64 位 Windows 中。
Wow64 表示 Windows 64 位上的 Windows(32 位),它是一个兼容层,使 x86 程序能够在 x86-64 Windows 上运行,x86 程序安装在 C:\Program Files (x86)\ 并且它们的库是在 C:\Windows\SysWOW64 中,注册表项存储在 HKLM\SOFTWARE\Wow6432Node 中,而 64 位程序安装在 C:\Program Files\ 并使用 C:\Windows\System32 中的 dll,注册表项是 HKLM 的子项\Software,因此要获取 x86 和 x64 软件的程序名称,请使用以下两个命令:
请参阅获取与添加/删除程序列表匹配的已安装应用程序列表
Powershell 脚本:
或者简单地使用命令行,您可以使用
WMIC