如何查找所有已安装的程序,包括64位应用程序

时间:2014-05-08 12:24:09

标签: c# .net

我知道这个问题已经存在了。但答案是32位(我使用)或建议“访问/修改注册表”。我在第一个选项中失败了。第二种选择对我不利。我自己不知道测试机器和注册表项有32位和64位不同。我试图列出所有安装的应用程序并卸载指定的应用程序(ruby)。我在查询中使用了wmi类

ManagementObjectSearcher managementObjectSearcher = new ManagementObjectSearcher("SELECT * FROM Win32_Product");

但是,它不会返回所有应用程序。缺少“ruby”,但它显示在Control Panel\Programs\Programs and Features中,如下所示。任何人都可以说如何访问所有已安装的程序而不管它们的位(32/64)?

注意:我使用的是VS2010,.Net 4.0,C#,Windows 7企业版。

enter image description here

1 个答案:

答案 0 :(得分:2)

实际上没有“所有安装的程序”这样的东西。

程序可以是:

  • 桌面上的简单可执行文件。
  • 一起合作的可执行文件和DLL文件的集合。通常这些将在Program Files中。
  • 注册为加载项或shell扩展名的DLL
  • 别的东西

因此,“程序”不是一件可以最终确定的事情。

安装可能是:

  • 与Windows Installer一起安装。您可以使用Installer API获取这些列表。
  • 安装了另一个不使用Windows Installer的安装程序,只是将文件放在所需的位置。他们通常提供自己的卸载程序。这些通常记录在注册表中以添加/删除程序工具。
  • 刚刚解压缩到一个文件夹中。这些可能不会记录在注册表中的任何位置,它们只是文件夹中的文件。也许他们在桌面或开始菜单中放置了“卸载”快捷方式,或者可能没有。

因此,“安装”并不是一件可以最终确定的简单事情。