我传统上说,就像 Windows 现在一样,在新的设置选项下有一个“应用程序和功能”页面 (%Windir%\ImmersiveControlPanel\SystemSettings.exe)。此应用程序列表还包括现在称为 Windows Modern 应用程序,即 Metro、全屏或 Windows 应用商店应用程序。由于该问题专门针对程序和功能,因此此答案将不涵盖这些内容。
作为开发人员,有多种方法可以创建安装程序来打包应用程序,无论是使用 Windows Installer,还是使用WiX或 InstallShield 等工具包创建 MSI 文件。然后是开发人员创建的自定义安装程序。在任何情况下,为了确保您的应用程序出现在上面的列表中,您只需要定义两个值,尽管通常有更多的标准值,它们是:
也可以使用控制面板文件 appwiz.cpl 启动的“程序和功能”列出了所有以定义方式注册的应用程序,以便出现在此列表中。传统上,这是使用户能够删除或修改已安装的应用程序的主要入口点。
我传统上说,就像 Windows 现在一样,在新的设置选项下有一个“应用程序和功能”页面 (%Windir%\ImmersiveControlPanel\SystemSettings.exe)。此应用程序列表还包括现在称为 Windows Modern 应用程序,即 Metro、全屏或 Windows 应用商店应用程序。由于该问题专门针对程序和功能,因此此答案将不涵盖这些内容。
作为开发人员,有多种方法可以创建安装程序来打包应用程序,无论是使用 Windows Installer,还是使用WiX或 InstallShield 等工具包创建 MSI 文件。然后是开发人员创建的自定义安装程序。在任何情况下,为了确保您的应用程序出现在上面的列表中,您只需要定义两个值,尽管通常有更多的标准值,它们是:
根据安装的应用程序,可以在以下注册表位置找到“卸载程序”键:
32位电脑:
64位电脑:
其中:64 位应用程序上的 32 位应用程序通常位于 Wow6432 节点下。HKCU 下的那些是用户的安装程序,而不是计算机,有时是安装程序中的一个选项。
因此,要像 Explorer.exe 那样枚举所有已安装的应用程序,当您启动程序和功能时,您必须考虑上述键下的值。
还有一点需要注意,应用程序可以使用
SystemComponent
DWORD “隐藏”自己,使其不出现在此列表中。该值可以是 1 或 0,其中 1 将从列表中隐藏应用程序。我假设的意图是让 .NET 等通常不会由用户管理的系统组件保持隐藏状态。然而,这通常由供应商使用,他们为一个套件安装多个组件,然后创建一个统一的卸载程序,以便更轻松地删除整个应用程序并以正确的顺序删除每个组件。因此,以下 PowerShell 命令将枚举上述每个卸载键,并且在 SystemComponent 不为 1 且存在 DisplayName 值的情况下,将打印 DisplayName:
现在当然还有其他应用程序可能被归类为已安装,但如果它们没有在上述位置之一注册,它们将不会出现并且超出问题的范围。
还有其他方法可以获取此列表中的项目,但可能仅返回一个子集,例如,仅返回基于 MSI 的应用程序。
问题:是否有可以显示所有已安装应用程序的 powershell 或其他方法?
请参阅如何在 Windows 上创建已安装程序的列表
这是一个自我提升脚本,用于获取具有管理员权限的所有内容:
打开 Powershell并以管理员身份运行后输入此内容
PowerShell 将为您提供所有程序的列表,包括版本、开发人员的名称,甚至是您安装它的日期。
不过,您可能希望将其导出到文件中,这也很容易。您可以使用 > 符号发送输出并将路径添加到要创建的新文本文件。例如:
这是来源。