当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] 使用软件安装

作者:精品下载站 日期:2024-12-14 03:02:32 浏览:14 分类:玩电脑

使用软件安装


通过WMI的查询可以找到使用Windows Installer安装的应用程序,但并非所有应用程序都使用Windows Installer。查找与其他工具一起安装的应用程序的具体技术取决于安装程序软件。

例如,通过将文件复制到计算机上的文件夹而安装的应用程序通常无法使用此处讨论的技术进行管理。您可以使用使用文件和文件夹中讨论的技术将这些应用程序作为文件和文件夹进行管理。

对于使用安装程序包安装的软件,可以使用 Win32Reg_AddRemoveProgramsWin32_Product 类找到 Windows Installer。然而,这两者都存在问题。仅当您使用 System Center Configuration Manager (SCCM) 时,Win32Reg_AddRemovePrograms 才可用。 Win32_Product 类可能会很慢并且有副作用。

警告

Win32_Product 类未针对查询进行优化。使用通配符筛选器的查询会导致 WMI 使用 MSI 提供程序枚举所有已安装的产品,然后按顺序解析完整列表以处理筛选器。这还会启动对已安装软件包的一致性检查,验证并修复安装。验证是一个缓慢的过程,可能会导致事件日志中出现错误。有关更多信息,请参阅知识库文章 974524。

本文提供了一种查找已安装软件的替代方法。

查询卸载注册表项以查找已安装的软件

由于大多数标准应用程序都会在 Windows 中注册卸载程序,因此我们可以通过在 Windows 注册表中查找它们来在本地使用这些卸载程序。没有保证可以找到系统上的每个应用程序。但是,可以在以下注册表项的添加或删除程序中找到其列表中显示的所有程序:

HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Uninstall

我们可以通过统计注册表项的数量来找到已安装的应用程序的数量:

$UninstallPath = 'HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall'
(Get-ChildItem -Path $UninstallPath).Count
459

我们可以使用各种技术进一步搜索此应用程序列表。要显示Uninstall 下注册表项中的注册表值,请使用注册表项的GetValue() 方法。该方法的值是注册表项的名称。例如,要查找 Uninstall 键中应用程序的显示名称,请使用以下命令:

Get-ChildItem -Path $UninstallPath |
    ForEach-Object -Process { $_.GetValue('DisplayName') } |
    Sort-Object

笔记

无法保证 DisplayName 值是唯一的。

以下示例生成类似于 Win32Reg_AddRemovePrograms 类的输出:

Get-ChildItem $UninstallPath |
    ForEach-Object {
        $ProdID = ($_.Name -split '\')[-1]
        Get-ItemProperty -Path "$UninstallPath$ProdID" -ea SilentlyContinue |
        Select-Object -Property DisplayName, InstallDate, @{n='ProdID'; e={$ProdID}}, Publisher, DisplayVersion
} | Select-Object -First 3

为了简洁起见,此示例使用 Select-Object 将返回的项目数限制为三个。

DisplayName    : 7-Zip 22.01 (x64)
InstallDate    :
ProdID         : 7-Zip
Publisher      : Igor Pavlov
DisplayVersion : 22.01

DisplayName    : AutoHotkey 1.1.33.10
InstallDate    :
ProdID         : AutoHotkey
Publisher      : Lexikos
DisplayVersion : 1.1.33.10

DisplayName    : Beyond Compare 4.4.6
InstallDate    : 20230310
ProdID         : BeyondCompare4_is1
Publisher      : Scooter Software
DisplayVersion : 4.4.6.27483

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯